在springboot中使用mybatis的时候,出现这种情况。 对于这种错误,一般在于mapper接口与xml文件无法绑定。
解决思路:
- 首先看看mapper.xml文件中的方法名,namespace是否拼写正确。
- 查看编译后的target文件中,是否有xml文件
因为我的mapper接口和mapper.xml文件没有放在同一个文件夹下,所以在application.yml配置文件中还需要指定mapper-locations
mybatis:
# 如果mapper的位置是分开的,比如一个*mapper.xml在一个文件夹下,那么就是多个xml,需要用classpath*,同时文件路径 用**表示任意的一级目录
mapper-locations: classpath*:com/zkck/admin/**/mapper/*.xml
从上图可以看出来,在target文件夹下,没有AdminUserMapper.xml文件。
一般这种问题是因为maven将源码的资源文件过滤掉了。需要再pom.xml文件中取消掉过滤
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<!-- <excludes>-->
<!-- <exclude>**/*.java</exclude>--> <!-- 排除.java源文件,只保留.class文件-->
<!-- </excludes>-->
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>