问题背景:当程序运行时,有些方法用到了mapper.xml文件中sql语句时,若maven打包时没有将mapper.xml打到target文件中时,程序会报错。
图片1

一次打包发现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>

图片2

怀疑是不是pom文件中的build写的有问题,将mapper文件移除文件夹直接放入resources文件下打包,发现mapper文件被成功打包了。
图片3

pom文件的build写的没有问题,此时怀疑是否同名同路径的问题。java文件夹下有/org/mapper路径,resources文件夹下也有/org/mapper的路径。此时将resources文件夹下创建了个mappers目录,将/org/mapper文件夹放入其中,打包后mapper文件被成功打包到target的classes文件中,其mapper文件的完整目录也在其中。
图片4

总结:遇到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
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐