λ„ˆλ¬΄ ν”ν•˜κ²Œ λ§Œλ‚  수 μžˆλ‹€.

이번 κΈ€μ—μ„œλŠ” λ§ˆμ΄λ°”ν‹°μŠ€(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 μΈν„°νŽ˜μ΄μŠ€κ°€ μžˆλŠ” μœ„μΉ˜μ™€ μΌμΉ˜ν•œμ§€ ν™•μΈν•΄λ³΄μž.