Mybatis在idea中錯誤:Invalid bound statement (not found)


學習mybatis的過程中,測試mapper自動代理的時候一直出錯,在eclipse中可以正常運行,而同樣的代碼在idea中卻無法成功。雖然可以繼續調試,但心里總是糾結原因。百度了好久,終於找到一個合適的原因。參考:http://blog.csdn.net/z69183787/article/details/48933481;

原因:(參考:http://www.linuxidc.com/Linux/2015-06/118877.htm)

IDEA的maven項目中,默認源代碼目錄下的xml等資源文件並不會在編譯的時候一塊打包進classes文件夾,而是直接舍棄掉。

如果使用的是Eclipse,Eclipse的src目錄下的xml等資源文件在編譯的時候會自動打包進輸出到classes文件夾。Hibernate和Spring有時會將配置文件放置在src目錄下,編譯后要一塊打包進classes文件夾,所以存在着需要將xml等資源文件放置在源代碼目錄下的需求。

解決:

方法1:將xml或properties等配置文件放到resource下,並修改獲取配置文件的代碼,比如注冊mapper.xml的位置等;

方法2:在maven中添加過濾:

 

 1  <!--配置Maven 對resource文件 過濾 -->
 2         <resources>
 3             <resource>
 4                 <directory>src/main/resources</directory>
 5                 <includes>
 6                     <include>**/*.properties</include>
 7                     <include>**/*.xml</include>
 8                 </includes>
 9                 <filtering>true</filtering>
10             </resource>
11             <resource>
12                 <directory>src/main/java</directory>
13                 <includes>
14                     <include>**/*.properties</include>
15                     <include>**/*.xml</include>
16                 </includes>
17                 <filtering>true</filtering>
18             </resource>
19         </resources>

 

我采用mybatis的自動代理設置,將mapper文件和xml文件同名同包下,並在sqlMap.xml(mybatis-config.xml)中配置mapper自動注冊掃描包:

 1 <mappers>
 2         <mapper resource="sqlmap/User.xml"/>
 3         <!--通過resource方法一次加載一個映射文件 -->
 4          <!--<mapper resource="sqlmap/UserMapper.xml"/>-->
 5         
 6         <!-- 通過mapper接口加載單個 映射文件
 7         遵循一些規范:需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄 中
 8         上邊規范的前提是:使用的是mapper代理方法
 9          -->
10          <!--<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>-->
11         
12         <!-- 批量加載mapper
13         指定mapper接口的包名,mybatis自動掃描包下邊所有mapper接口進行加載
14         遵循一些規范:需要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄 中
15         上邊規范的前提是:使用的是mapper代理方法
16          -->
17         <package name="cn.itcast.mybatis.mapper"/>
18 
19     </mappers>

測試通過,解決了心頭的疙瘩。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM