MyBatis-Plus找不到Mapper.xml文件的几种解决方法
作者:Stone?Lio 发布时间:2023-11-24 03:37:52
在整合SpringBoot和Mybatis-plus时,想写自定义的sql,所以创建了Mapper.xml文件,但是启动后却老是报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
很明显,是Mapper.xml未被扫描到。
此类问题的解决方式实际上都是配置上有问题,以下列出了一些解决方式。
方式1:Mapper的命名空间和Dao层的接口。
Mapper.xml文件中,<mapper namespace="这里填写映射的Mapper.java完整路径,如:com.test.Mapper">
方式2:如果Mapper.xml文件是放到java目录下,那么在项目的pom.xml文件中需要添加:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
方式3:注意在.yml配置文件中不要弄混淆Mybatis和Mybatis-plus的配置
比如项目pom.xml中引用的是Mybatis-plus的starter,其中已经包含了Mybatis了,配置文件中最好统一写成Mybatis-plus的配置:
mybatis:
mapper-locations: classpath:com/*/mapper/xml/*.xml
改成
mybatis-plus:
mapper-locations: classpath:com/*/mapper/xml/*.xml
方式4:如果是多子模块的项目,Mapper.xml文件是在子模块项目中,那么记得在classpath后面加*,代表扫描子项目的Mapper.xml文件
mybatis-plus:
mapper-locations: classpath*:com/*/mapper/xml/*.xml
方式5:我最近放的一个小错误,就是我的Mapper.xml文件是放在不同层次不同包下的,我配置了很多个扫描位置:
mybatis-plus:
mapper-locations: classpath*:com/*/mapper/xml/*.xml,com/test/*/mapper/xml/*.xml,/xml/*.xml
配置好发现依然报未扫描到Mapper.xml文件,后来发现,我的Mapper.xml文件是放到子模块中的"com/test/*/mapper/xml"目录下,配置应该要继续带上classpath*:
上面的配置改成:
mybatis-plus:
mapper-locations: classpath*:com/*/mapper/xml/*.xml,classpath*:com/test/*/mapper/xml/*.xml,/xml/*.xml
因为路径前面不带这个"classpath*"它默认是使用的"classpath",导致扫描不到子模块项目的Mapper.xml文件。
来源:https://blog.csdn.net/u011447905/article/details/123847295
猜你喜欢
- 本文实例讲述了Android编程开发之TextView单击链接弹出Activity的方法。分享给大家供大家参考,具体如下:话不多说直接上码:
- 最近的一个接口项目,传的参数要求是json,需要特殊处理一下。重点是这两句话:httpPost.setHeader("Conten
- 前言由于业务需要,后端需要返回一个树型结构给前端,包含父子节点的数据已经在数据库中存储好,现在需要做的是如何以树型结构的形式返给给前端。数据
- 前言上一篇我们认识了Kotlin编程语言,也搭建好开发环境。本篇就进入Kotlin的基础语法介绍,与其他编程语言一样,Kotlin也有自己的
- 本文实例为大家分享了Android登录注册功能的具体代码,供大家参考,具体内容如下展示效果代码区MainActivity(登录方法)publ
- HashMap的keySet()方法比较简单,作用是获取HashMap中的key的集合。虽然这个方法十分简单,似乎没有什么可供分析的,但真正
- 对于单链表不熟悉的可以看一下基于Java实现单链表的增删改查一、原地反转1、新建一个哨兵节点下一结点指向头结点2、把待反转链表的下一节点插入
- 大顶堆每个结点的值都大于或等于其左右孩子结点的值小顶堆每个结点的值都小于或等于其左右孩子结点的值对比图实现代码public class He
- 这里使用的是dynamic-datasource-spring-boot-starter ,它是一个基于springboot的快速集成多数据
- 面试题1:说说什么分布式事务?解释一下什么是CAP?现在互联网开发多使用微服务架构,一个简单的操作,在服务端可能就是由多个服务和数据库实例协
- 1、取得控制台应用程序的根目录方法方法1、Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法
- 双保险线程,每次启动2个相同的线程,互相检测,避免线程死锁造成影响。两个线程都运行,但只有一个线程执行业务,但都会检测对方的时间戳 如果时间
- 这篇文章主要介绍了Spring JDK * 实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 1、继承Thread类方式这种方式适用于执行特定任务,并且需要获取处理后的数据的场景。举例:一个用于累加数组内数据的和的线程。public
- ThreadLocal简介变量值的共享可以使用public static的形式,所有线程都使用同一个变量,如果想实现每一个线程都有自己的共享
- 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也是
- 这篇文章主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- Bean的自动装配自动装配说明自动装配是使用spring满足bean依赖的一种方法spring会在应用上下文中为某个bean寻找其依赖的be
- try { // 方
- Spring Data Jpa复杂查询总结只是做一个总结所以就不多说废话了实体类@Entity@Table(name = "t_h