踩坑 IDEA默认是不解析xml的
引言:
对于IDEA系列编辑器,XML 文件是不能放在 java 文件夹中的,IDEA 默认不会编译源码文件夹中的 XML 文件。
我在使用IDEA 编写Mybatis-plus时,写的自定义SQl语句总是显示 Invalid bound statement (not found)
根据报错信息可以看到是Mapper中自己写的自定义方法 没有绑定相应的SQL语句
检查了一遍配置,都没有问题,而Sprinboot启动时 log中Property 'mapperLocations' was not specified这句提示引起了我的注意
配置中配置了mybatis-plus.mapper-locations=classpath*:**/mapper/xml/*.xml,但启动器没扫描到,十分奇怪。
后来才知道从Mybatis-plus 官方文档找出了答案
因为对于IDEA系列编辑器,XML 文件是不能放在 java 文件夹中的,IDEA 默认不会编译源码文件夹中的 XML 文件。
果然我在POM中没有指明解析xml,在启动后生成的target 目录下文件的mapper包下没有找到相应的xml
解决方法
将配置文件放在 resource 文件夹中
对于 Maven 项目,可指定 POM 文件的 resource
<build>
<resources>
<resource>
<!-- xml放在java目录下-->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!--指定资源的位置(xml放在resources下,可以不用指定)-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
注意!Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)
再次启动,启动内加载到了xml