首先是问题出现在用xml配置mybatis的mapper中,原理是mapper与xml没有映射成功,遵循着这个方向,我们来梳理一下常见的错误原因:
一、xml文件
1.xml文件中的<mapper namespace="xxxMapper">配置路径出了问题,路径不对或有空格等等(使用generatorConfig生成的跳过此条)
2.xml文件中<select id="xxxr">的id与mapper中的不对应
3.parameterType使用问题,未跟实体类对应
3.resultType和rusultMap的使用问题,常见返回值是list的,未正确使用resultMap
4.有时候随便动一下xml文件,换个行之类的就能用了
5.注意mapper文件在java下,xml文件在resources下
二、pom文件
没这段话的就加上去
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
三、yml文件
mybatis:
# 映射文件所在路径
mapper-locations: classpath:mappers/*.xml
# pojo类所在包路径
type-aliases-package: com.example.test.view.models
1.路径中的拼写错误,常见乱加空格、mapper和mappers问题,加不加s对应自己的文件夹就好
2.文件目录错误,如自己在resources下面建立了多层文件夹,看起来是这样的
由于idea编译器的显示问题,此时并不知道xxx.xxx.xxx是一个名为xxx.xxx.xxx的文件夹还是三个名称都为xxx的文件夹,就容易出现错误,三层文件的创建方式为
同理有的新手在上面的pojo类所在路径也由于包创建问题导致读不出来,建议想不起来的自己refactor改一下
四、用SqlSessionFactory的,在实现时加下面下面这句,原理与yml配置方式一致
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*Mapper.xml"));
五、mybatis和mybatis plus冲突了,导致在maven里多次引用jar包,检查一下,或者删去mybatis plus试试