问题背景:
当程序运行时,有些方法用到了mapper.xml文件中sql语句时,若maven打包时没有将mapper.xml打到target文件中时,程序会报错。
一次打包发现target文件的classes文件中没有mapper.xml文件,检查pom.xml文件的编译配置看看是否指定了编译resources文件夹下所有文件,检查了是加了的。虽然mapper.xml文件没有被打包,但是resources文件夹下yml文件被打包了。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<!--包含文件夹以及子文件夹下所有资源-->
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
怀疑是不是pom文件中的build写的有问题,将mapper文件移除文件夹直接放入resources文件下打包,发现mapper文件被成功打包了。
pom文件的build写的没有问题,此时怀疑是否同名同路径的问题。java文件夹下有/org/mapper路径,resources文件夹下也有/org/mapper的路径。此时将resources文件夹下创建了个mappers目录,将/org/mapper文件夹放入其中,打包后mapper文件被成功打包到target的classes文件中,其mapper文件的完整目录也在其中。
总结:遇到resources下的文件没有成功打包时,一检查pom文件build配置,二检查是文件路径是否与src/main/java下的路径一致了。
记得application.yml或application.properties文件中指定mapper文件所在位置。
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台sql日志输出
global-config:
db-config:
logic-delete-field: deleted # 逻辑删除
logic-delete-value: 1
logic-not-delete-value: 0
mapper-locations: classpath:mappers/**/*.xml # mapper文件所在路径
#mybatis:
# mapper-locations: classpath:mappers/**/*.xml