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타입으로 막바로 변수로 받아도 된다!! 신나!
댓글 없음:
댓글 쓰기