λ무 ννκ² λ§λ μ μλ€.
μ΄λ² κΈμμλ λ§μ΄λ°ν°μ€(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 μΈν°νμ΄μ€κ° μλ μμΉμ μΌμΉνμ§ νμΈν΄λ³΄μ.