前言
今天升级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自己对照下;
一步步来,刷新,清理,重新构建。全做完。
总结:一定要注意大小写,名称字母是否完全一致,缺字母的导致名称不对应,各种路径错误,你们自己面壁去;