總結了常見的解決方式,以下java
一、檢查xml文件的namespace是否對應接口,要是全路徑。mybatis
xml文件名不須要和接口名一致,namespace和接口全類名一致便可。app
二、xml中的函數id和接口中的函數名是否對得上,參數類型、返回值類型是否對得上maven
三、去看輸出目錄中有沒有xml映射文件,maven項目默認把資源文件放在src/main/resources下,默認只識別src/main/resources下的資源文件。函數
若是你把xml映射文件等資源文件放到src/main/java的某個目錄下,識別不了,須要在pom.xml中配置一下:spa
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources>
把資源文件的路徑都寫進去。code
四、看一下mybatis的配置對不對xml
#實體類別名
mybatis.type-aliases-package=com.chy.xm_mall.model
#映射文件的位置
mybatis.mapper-locations=classpath:mapper/*.xml
五、看一下xml映射文件是否帶了後綴名.xmlblog
這個很容易被忽略,你不帶後綴.xml,IDEA根據文件內容能識別它是xml文件,顯示的圖標也是xml文件的,但不帶.xml後綴就不是映射文件,運行時識別不了。接口
第二個纔是正確的。
一些經常使用方法
未來可能會出現的
xml的dtd聲明要與使用的mybatis版本保持一致
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
這是mybatis3的聲明,未來若是使用更高版本的mybatis,注意dtd聲明也要對應。
未驗證的