[SpringBoot][Mybatis]springboot整合mybatis掃描不到Mapper.xml解決方案


在SpringBoot整合MyBatis時,可能會出現掃描不到Mapper.xml文件的問題

常見的報錯是:

  org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):接口方法的全限定名

一般出現這種錯誤,都是映射不到mapper.xml文件的問題:

排查方向:

  1.mapper接口和對應的xml文件路徑是否在同一個目錄下?

  比如說:  mapper接口全限定名:  com.xxx.mybatis.mapper.xxxMapper

  那對應的xxxMapper.xml,是同樣的在java目錄下com.xxx.mybatis.mapper包下,如圖:

  

 

此時:

  有一個隱藏的問題:  maven項目運行時會打包,而java目錄下的xml資源在打包時會被忽略.

解決方案:

  在pom.xml中配置如下:

 1 <build>
 2     <resources>
 3         <resource>
 4             <directory>src/main/java</directory>
 5             <includes>
 6                 <include>**/*.xml</include>
 7             </includes>
 8         </resource>
 9         <resource>
10             <directory>src/main/resources</directory>
11         </resource>
12     </resources>
13 </build>            

  2.如果不是在同一目錄下,而是xml文件是在resources目錄下,那要查看mapper接口和xml文件是否對應?

  

  上圖中就是相對應的,此時是可以掃描到的

如果不對應,還可以通過自定義掃描路徑的方式:

  在application.properties中,配置如下:

mybatis.mapper-locations=classpath:想要掃描的路徑,如com/xxx/mybatis/*.xml

到此:問題應該就可以解決了

 

 

有些小伙伴可能是從ssm轉過來的,很好奇以前配置的SqlSessionFactor和MapperScan都沒了,是不需要了嗎

了解一下SpringBoot的自動裝配原理,這里就不多贅述了.

mybatis-spring-boot-starter也提供了對應的自動裝配類

 


免責聲明!

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



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