org.mybatis.spring.MyBatisSystemException : nested exception is ...
๊ฐ๋ฐํ๋ฉด์ ๋ถ๋ช
mybatis parameter Binding ์ค๋ฅ๊ฐ ๋ ์ ์ด ์์๋๋ฐ;;; ์ค๋๋ง์ ๊ตฌ๊ธ๋งํ์ฌ ๊ณต๋ฐฑ์ด ์๋์ง.. ๋ง๊ฐํ๊ทธ๋ ์ ๋ซํ์๋์ง,, ์ผ๋ฐ์ ์ผ๋ก ํ์ธํ ๋ถ๋ถ๋ค์ ํ์ฐธ ํ์ธํ๊ณ ๋์๋ ํด๊ฒฐ๋์ง ์์๋ค...
๊ทธ๋ฌ๋ค๊ฐ ์๋ ์ฌ์ค์ ๊ฐ๊ณผํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ณ , ๊ฒธํํ ๋ง์์ผ๋ก ๋ค์ ๋ฐฐ์ฐ๊ณ ์ ํ๋ค.
MyBatis์ iBatis๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ๊ฐ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ๋ฐ๋ผ ๋์ ๋ฐฉ์์ด ์กฐ๊ธ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ํ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๋ํ ๊ท์น ๋ฐ ๊ธฐ๋ณธ ์ค์ ๋ ์ด ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ๋ค๋ฅผ ์ ์๋ค.
์๋ 3.0.0 ๊ธฐ์ค์์๋ ๋ณ๋์ ์ด๋ ธํ ์ด์ ์ ์ค์ ํ์ง ์๊ณ ๋, ์๋์ผ๋ก ๋๊ธด parameter ๋ค์ด ์ ๋ฐ์ธ๋ฉ๋์๋ค.
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.0'
ํ์ง๋ง 2.2.0 ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ํ ํ๋ก์ ํธ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๊ณ , ๋ค์๊ณผ ๊ฐ์ด ํด๊ฒฐํ์๋ค.
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
MyBatis์์์ @Param ์ด๋ ธํ ์ด์
MyBatis์์๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ๋งคํํ๊ธฐ ์ํด @Param ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค. ์ด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด MyBatis๊ฐ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์ฐพ์์ SQL ์ฟผ๋ฆฌ์ ๋งคํํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
iBatis
๊ณผ๊ฑฐ ๋ฒ์ ์ iBatis์์๋ @Param ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ง ์๊ณ ๋ ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ์ด ์ ๋์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค. ์ด๋ iBatis๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์์น์ ๋ฐ๋ผ ์์๋๋ก ๋งคํํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฐ๋ผ์ ํ๋ผ๋ฏธํฐ์ ์์์ SQL ์ฟผ๋ฆฌ์ ์์น(?)๊ฐ ์ผ์นํด์ผ ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์ ํ๋ผ๋ฏธํฐ ์์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ ์ธก๋ฉด์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ MyBatis์์๋ ๋ช
์์ ์ธ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ธ๋ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ํด @Param ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ MyBatis๋ฅผ ์ฌ์ฉํ ๋๋ @Param ์ด๋
ธํ
์ด์
์ ์ ์ ํ๊ฒ ํ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ช
์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ๋์ค์ ํ๋ผ๋ฏธํฐ ์์๋ฅผ ๋ณ๊ฒฝํด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
๋จ์ผ/๋ค์ค ํ๋ผ๋ฉํฐ ๋ฐ์ธ๋ฉ
1. ๋จ์ผ ํ๋ผ๋ฉํฐ
String select(@Param("data")String data);
์ค๋ธ์ ํธ๋ฌธ์ด ํ๋๋ผ๋ฉด ๊ทธ๋ฅ ๊ทธ ์์ ๋ณ์๋ค์ ์ฌ์ฉํ๋ฉด ๋๋ค.
"select * from thistable where id = #{attributename1} and pw = #{attributename2}"
2. ๋ค์ค ํ๋ผ๋ฉํฐ
String select(@Param("data")SampleDTO data, @Param("item")int a);
์ด๋ค ์ค๋ธ์ ํธ์ธ์ง ์ ํํ๊ฒ ์ง์ ํด์ผ ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฅํ๋ฏ๋ก alias ๋ฅผ ์ฃผ์ด์ผ ํ๋ค.
"select * from thistable where id = #{data.attributename1} and pw = #{item}"