原计划使用Maven工程分模块的开发,引入vo、dto、po思路,或一些关联查询需要必须自己写sql
我遇到的场景是:mybatis-plus封装的查询语句没问题,自定义sql报错
报错如下:
此问题是mybatis没有找到对应xml引起的
问题排查
MybatisPlusProperties配置项及默认参数
查看源码MybatisPlusAutoConfiguration中xml是否扫描到
跟踪代码发现然并卵,没有扫描到,所以是mybatis-plus.mapper-locations
的问题
原因及解决方案
- 配置文件中mybatis-plus扫描的xml文件配置信息错误,classpath:指的是编译后的根目录,可以如下方式解决。
mybatis-plus: # 匹配所有文件夹中含有/xml/文件夹中的*Mapper.xml mapper-locations: classpath*:**/xml/*Mapper.xml
mybatis-plus: # 精准全路径匹配 mapper-locations: classpath*:com/xml/*Mapper.xml
- xml中sql绑定的id错误,一般这种概率较小,都是自动生成xml,所以一般不会是这个问题
- 是否打包编译了xml文件,pom中自行根据实际情况添加
<resources> <resource> <directory>src/main/resources/META-INF/</directory> <targetPath>META-INF/</targetPath> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/*.xml</include> <include>**/*.ftl</include> <include>**/*.properties</include> <include>**/*.yml</include> <include>static/**</include> <include>templates/**</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.ftl</include> <include>**/*.properties</include> <include>**/*.yml</include> <include>static/**</include> <include>templates/**</include> </includes> <filtering>false</filtering> </resource> </resources>
如果是自己创建的sqlSessionFactory
需要修改此处
解决后效果
启动日志中会输出扫描后的xml文件后才会打印mybatis日志