maven构建MyBatis项目中的一个注意事项(mapper开发中需要的)

僤鯓⒐⒋嵵緔 提交于 2020-01-10 12:41:02

maven构建MyBatis项目中的一个注意事项(mapper开发中需要的)

1. 首先了解下maven项目中的目录结构

在正常的开发中,会自动构建相应的文件夹并存放相应的文件。这样在执行mvn compile指令后,才会将对应文件夹下的对应文件给输出到target目录中。例如:按照上图的目录结构构建的一个MyBatisDemo工程,文件的存放路径如下

然后执行compile指令,会生成target目录,其中的classes文件夹也就是我们最终的所要部署的目录文件结构(如果执行的是package命令,则会把classes打包成jar文件),其文件结构如下。可以看到,maven会自动帮我们把在resources目录下的配置文件给加入到输出的classes文件夹下。同时test文件夹下的所有东西都不会出现在target目录下。

2.在MyBatis开发中遇到的一个问题

使用MyBatis开发的过程中,一般不会使用DAO进行开发,而会使用Mapper接口进行开发,一般要求Mapper接口与Mapper的xml配置文件处于同一级里。

如果还是以前的目录结构,配置文件都放在resources下的话,就会出现找不到Mapper.xml文件的异常。因为maven在执行compile的时候,如果在java文件夹下发现了除了.java文件以外的东西,例如UserMapper.xml,就不会把该文件输出到classes文件夹中,所以在运行的时候会报IOException,也就是找不到UserMapper.xml文件。

3. 配置pom.xml解决该问题

要解决该问题,就是要使maven在compile时,想将Mapper.xml文件和Mapper接口放在一起,故将src/main/java添加到资源搜索目录即可。

  1. <build>
  2. <resources>
  3. <resource>
  4. <!-- 由于想将Mapper.xml文件和Mapper接口放在一起,
  5. 故将src/main/java添加到资源搜索目录 -->
  6. <directory>src/main/java</directory>
  7. <includes>
  8. <include>**/*.properties</include>
  9. <include>**/*.xml</include>
  10. </includes>
  11. <filtering>false</filtering>
  12. </resource>
  13. <!-- 原有的src/main/resources也要添加到资源搜索目录,可以省略-->
  14. <resource>
  15. <directory>src/main/resources</directory>
  16. <includes>
  17. <include>**/*.properties</include>
  18. <include>**/*.xml</include>
  19. </includes>
  20. <filtering>false</filtering>
  21. </resource>
  22. </resources>
  23. </build>
  24. 复制代码

这样在compile之后,java文件夹下的xml文件也会被打包到classes文件夹下,找不到UserMapper.xml的问题成功解决。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!