背景
mybatis-Plus自动生成代码之后,由于是多表关联查询,所以在mapper.xml中写sql语句。
原因分析
第一种可能
xml的select的id和resultType是不是写对的。
如果没问题,就只有第二种可能。
第二种可能
xml写在src/java文件下面。而自己的项目是用的maven创建的。
maven默认只发布src.main.java文件中的java类型文件进行加载,其他类型文件不会加载
所以可以在target中是没有加载我们的xml文件
maven启动之后xml文件为什么写resource文件里面不是java
Maven在构建项目时,默认会将src/main/resources目录下的所有文件复制到项目的输出目录(通常是target/classes),并且这个过程是自动化的。如果你的XML文件不在src/main/resources目录下,Maven在构建过程中就不会将其复制到输出目录,导致最终的jar或者war包中不包含这个XML文件。
解决方案
方案一:
直接把xml文件放在target文件里面,这种方法很直接,但每次修改都要重新改,麻烦【不推荐】
方案二:
把我们xml文件,不要放在java文件里面,放在resources文件里面。但需要改我们的一些扫描文件路径一些。【如果是一次搭建,可以一部到位】如果写了很多,就要斟酌一下。
方案三:【推荐】
在pom.xml中将java目录中的*.xml文件也进行打包
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
在配置文件中指定路径
mybatis-plus.mapper-locations=classpath:com/mycompany/eduservice/mapper/xml/*.xml
然后项目重新启动,就可以了。