前言
今天升级SpringBoot3时尝试兼容Mybatis和MybatisPlus出现多个异常。顺带写写排查方案,springboot2其实也一样用
- 排查方向:mapper接口中的方法名和mapper.xml中的id标签不一致
仔细核对抛出异常的接口和xml文件名。方法名 - 排查方向:.mapper.xml中的namespace和实际的mapper文件不一致仔细核对抛出异常的接口和xml文件名。方法名
- 排查方向:检查扫描路径是否正确
①我使用的mybatis-plus,所以没有使用@MapperScan,如有配置到的小伙伴,首先检查这个配置是否和你的Mapper接口路径一直。
②使用mybatis-plus的小伙伴,还要检查一下yaml/yml配置文件
mybatis-plus.mapperLocations 是否和你的xml路径一致。(注意层级哦~) - 排查方向:打包文件不包含xml
检查target文件夹下xml所在路径是否有响应的文件,如果没有在检查下pom配置
下面是基于3.1插件和jdk17的配置<maven.plugin.version>3.1</maven.plugin.version> <java.version>17</java.version>
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven.plugin.version}</version><configuration><skip>true</skip><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.ftl</include></includes></resource></resources></build>
代码结构
还有其他几种代码结构和配置详见:SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置
- 排查方向:少见returnType类型没有写全限定类名
- 其他解决方案:怀疑编译和缓存问题、基于idea的截图,Eclipse自己对照下;
一步步来,刷新,清理,重新构建。全做完。
总结:一定要注意大小写,名称字母是否完全一致,缺字母的导致名称不对应,各种路径错误,你们自己面壁去;