2021-03-11

0311 마이바티스오류 해결

 1. ProductMapper를 추가하던 중 에러 발생:

sessionfactory가 없어서 세션을 생성할수없고 그래서 mapper인스턴스를 만들수 없다고 함.


근데 원래는 스프링 부트가 알아서 sessionfactory만들어줘서. sql펑펑 날렸단 말이지.

아마 맵퍼가 두개로 늘어나서 그런듯(??)

api문서를 읽어보는데. 스레드..? 와 관련한 문제인것같다(추측)

그래서 그냥 정석대로 sql세션팩토리 + sqltemplate을 빈으로 추가했다.

잘돌아간다.


2. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

???또 맵퍼를 못찾는 문제 발생


왜지?
계속 되다가 갑자기 안되는 이유???

Failed to parse mapping resource: 'file [C:\study\shop\target\classes\mapper\ProductMapper.xml]';

3.이럴수가.........단순 문법에러였다 ㅜㅜㅜㅜ바보바보.

select * from TBL_PRODUCT WHERE CATEGORY_ID = #{}라고

아무런 args를 주지않은 것이었다 ;;;

select * from TBL_PRODUCT WHERE CATEGORY_ID = #{categoryId}

라고 수정.

Parsing error was found in mapping #{}.  Check syntax #{property|(expression), var1=value1, var2=value2, ...} 


에러메시지를 잘 읽자!!!


4. 1번에서 썼듯이, sqlsession과 sqlsessiontemplate이 없어서의 문제인가?? 했는데 아니었다.

http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/apidocs/org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.html

스프링부트에서는 마이바티스오토컨피규어 클래스가 sqlsession 및 템플릿을 전부 형성해주기 때문에. 내가 따로 작성할 필요가 없음. 

커스터마이즈해서 직접 세션과 템플릿을 주입하는것도 가능하지만. 이미 autoconfigure해서 빈으로 등록되어있기 때문에. xml의 위치 및 mapper인터페이스의 위치만 전달해주면 OK!


해결~~~기쁘다!!!

결국엔 다 오타로 끝나는군,,, 그래도 덕분에 또 배워서 좋다. 


잘된다!


5. 스프링은 데이터타입 알아서 파싱해주니까 넘 편하다~~

servlet환경에서는 getparameter로 받은다음에 내가 타입캐스팅 해줬어야했는데

얘는 알아서 슉 집어넣어주니까 . Long타입으로 막바로 변수로 받아도 된다!! 신나!

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...