๋„ˆ๋ฌด ํ”ํ•˜๊ฒŒ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค(MyBatis)๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ํ•œ ๋ฒˆ์ฏค์€ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š” org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ์—๋Ÿฌ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค.

ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉด์„œ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ ์„ค์ •์„ ์ ๊ฒ€ํ•ด๋ณด์ž.


์™œ ๋ฐœ์ƒํ• ๊นŒ?

์•„๋ž˜ ๋‚˜์—ด๋œ ๋‚ด์šฉ ์™ธ์—์„œ ๋ฐœ๊ฒฌํ•œ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋‹ค๋ฅธ ๋ถ„๋“ค๊ป˜ ๋„์›€ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :)

Mapper ์ธํ„ฐํŽ˜์ด์Šค์™€ XML์˜ ์˜คํƒ€

๊ธฐ๋ณธ์ ์œผ๋กœ Mapper ์ธํ„ฐํŽ˜์ด์Šค์™€ XML์— ์˜คํƒ€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.

<select> ๋ฌธ ๋“ฑ์— ์„ ์–ธํ•˜๋Š” id์— ์˜คํƒ€๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์„ ์–ธ๋˜์–ด ์žˆ๋Š” id๊ฐ€ Mapper ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋ช…๊ณผ ๋‹ค๋ฅธ์ง€ ํ™•์ธํ•ด๋ณด์ž. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„๊ณผ XML ํŒŒ์ผ์— ์„ ์–ธ๋œ ์ด๋ฆ„์ด ๋‹ฌ๋ผ์„œ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด IDE์—์„œ ์‰ฝ๊ฒŒ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์–ด๋ ค์šด ๊ณต๋ฐฑ์ด ์ˆจ์–ด์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

<!-- id์— ๊ณต๋ฐฑ์ด ์žˆ๋‹ค. -->
<select id="select " resultTYpe="String">
    ...
</select>


mapper-locations

์ฟผ๋ฆฌ๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” mapper XML์ด ์œ„์น˜ํ•œ ๊ฒฝ๋กœ๋ฅผ application.properties์— ์ •์˜ํ•˜์ง€ ์•Š์•„์„œ ๋˜๋Š” ์ž˜๋ชป ์„ ์–ธ๋œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •ํ™•ํ•œ ๊ฒฝ๋กœ๋Š” ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

mybatis.mapper-locations:classpath:mapper/*.xml


๋™์ผํ•œ ์ด๋ฆ„, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ

Mapper์˜ ์ด๋ฆ„์ด ๊ฐ™์ง€๋งŒ ํŒจํ‚ค์ง€ ์ด๋ฆ„์ด ๋‹ฌ๋ผ์„œ ์ธํ…”๋ฆฌ์ œ์ด๋‚˜ ์ดํด๋ฆฝ์Šค์—์„œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋‹ˆ ์ง์ ‘ ํ™•์ธํ•ด๋ด์•ผ ํ•œ๋‹ค.


yaml ํŒŒ์ผ ์˜คํƒ€

์„ค์ •ํŒŒ์ผ์„ properties๊ฐ€ ์•„๋‹Œ yaml ํŒŒ์ผ์— ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ณ„์ธต ๊ตฌ์กฐ์—ฌ์„œ ๊ฐ€๋…์„ฑ์ด ๋ณด๋‹ค ๋” ์ข‹์€ ์žฅ์ ์„ ๊ฐ–๋Š”๋‹ค. ๋‹ค๋งŒ ์ž‘์„ฑ๋ฒ•์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋“ค์—ฌ ์“ฐ๊ธฐ๋ฅผ ์ž˜๋ชป ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ตœ์ƒ๋‹จ์— ์„ ์–ธ๋œ spring ํ•˜์œ„์— ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ตœ์ƒ๋‹จ์— mybatis๊ฐ€ ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์„ค์ • ํŒŒ์ผ ๋‚ด์—์„œ ์ž˜๋ชป๋œ ๋“ค์—ฌ ์“ฐ๊ธฐ๋กœ ๋‹ค๋ฅธ ์„ค์ •๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ์ฝํžˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ™•์ธํ•ด๋ณด์ž.


DataSource Configuration

DataSource๋ฅผ ์„ค์ •ํ•˜๋Š” Configuration ํด๋ž˜์Šค๋ฅผ ์ ๊ฒ€ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

SessionFactory๊ฐ€ ์„ค์ •๋œ ๊ฒฝ์šฐ setMapperLocations ๋ฉ”์„œ๋“œ ๋“ฑ์œผ๋กœ Mapper XML์˜ ์œ„์น˜๋ฅผ ์„ ์–ธํ•  ํ…๋ฐ, ์˜๋„ํ•œ ๋Œ€๋กœ ์ž˜ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. @MapperScan์ด ์„ ์–ธ๋œ ๊ฒฝ์šฐ์—๋Š” Mapper ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ์œ„์น˜์™€ ์ผ์น˜ํ•œ์ง€ ํ™•์ธํ•ด๋ณด์ž.