mybatis-plus 和 mybatis-plus-boot-starter 引起的 org.apache.ibatis.binding.BindingException
最近改了一个之前的项目,为了简化CRUD加上了mybatis-plus,结果发现dao层接口找不到对应的xml文件了,出现了异常
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):XXX
就很奇怪,因为之前引入mybatis-plus都是正常的,然后还检查了一遍接口和xml可能存在问题的地方,都是正常,最后回归还是觉得是引入mybatis-plus导致的,调查之后发现是pom文件导包的问题引起的:
引用 mybatis-plus 包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.1.0</version>
</dependency>
引用 mybatis-plus-boot-starter 包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
引入包的不同,application.properties(yml)的mapper.xml 的文件引用路径配置也不同:
# mybatis mapper路径 适用于 mybatis 和 mybatis-plus
mybatis.mapper-locations=classpath*:mappers/*.xml
# mybatis-plus mapper路径 适用于 mybatis-plus-boot-starter
mybatis-plus.mapper-locations=classpath*:mappers/*.xml
xml文件路径为 src\main\resources\mappers,如图:
我引入的是 mybatis-plus-boot-starte 没有追加 mybatis-plus.mapper-locations 的配置,从而导致接口与xml文件没有映射上,所以根据引用的包添加不同的配置,就没有问题了。