关于Mybatis配置的几个常见问题总结

在配置Mybatis时,如果缺少@MapperScan注解、XML配置路径错误或mybatis-plus配置不正确,可能导致BindingException,指出Spring无法找到指定XML中定义的方法。解决方案包括检查启动类的注解、XML与接口的对应、配置文件中的路径设置以及确认正确的Maven依赖。

问题描述
配置Mybatis的时候,没有在配置文件propreties|yml文件中配置读取xml文件路径时会报以下错误。

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
 com.example.test.mapper.UserMapper.getToUser

问题解读
大概意思就是说,没找到你指定的xml中namespace——com.example.test.mapper.UserMapper中的getToUser方法。

换种说法就是:spring它找不到方法,没法自动装配,也就没法查询。

产生原因
1、启动类中没有添加@MapperScan注解,它的作用是扫描接口包,去匹配对应的dao层接口定义的方法。
2、xml文件对应的Java接口类的配置有误。
3、application.yml或者application.propreties中没有配置xml的读取路径,或者配置有误。
4、pom.xml文件引入的mybatis的pom依赖不正确。引用了mybatis-plus的baomidou包。

#正确的mybatis配置
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:/mapper/*Mapper.xml
  type-aliases-package: com.cloud.lowcode.entity.po
MyBatisMyBatis-Plus 中,配置多个路径以支持扫描 Mapper 文件或 XML 文件是常见的需求,尤其是在项目结构复杂、模块化较高的场景下。以下是几种常见方式来实现 MyBatis 的多路径配置。 ### 多路径 Mapper 扫描(基于注解) 在使用 MyBatis-Plus 的 `@MapperScan` 注解时,可以通过提供一个数组来指定多个包路径,从而实现多个 Mapper 路径的扫描。例如: ```java @Configuration @MapperScan(value = {"org.zy.modules.**.mapper*", "org.zy.system.mapper"}) public class MybatisPlusSaasConfig { // 配置内容 } ``` 该配置会扫描 `org.zy.modules` 下所有符合 `**.mapper*` 模式命名的包,以及 `org.zy.system.mapper` 包下的所有 Mapper 接口[^1]。 ### 多路径 XML 文件配置(基于 YAML) 在 Spring Boot 项目中,可以通过 `application.yml` 文件配置多个 XML 文件路径,以支持不同模块下的 XML 映射文件。例如: ```yaml mybatis-plus: mapper-locations: - classpath:mapper/**/*.xml - classpath*:mapper/**/*.xml typeAliasesPackage: com.test.aaa.bbb.**,com.test.ccc.ddd.entity.** ``` 其中 `mapper-locations` 属性用于指定 XML 文件的路径,支持通配符匹配多个目录。`classpath:` 和 `classpath*:` 的区别在于,后者会扫描所有类路径下的资源,而前者仅扫描主类路径下的资源[^2]。 ### 多路径 XML 文件配置(基于 XML) 在传统的 Spring 项目中,通常通过 `spring-mybatis.xml` 文件来配置 MyBatis。若需要支持多个 XML 文件路径,可以使用如下配置: ```xml <property name="mapperLocations"> <array> <value>classpath:com/tourInteraction/mapper/*.xml</value> <value>classpath:com/tourInteraction/mapper/article/*.xml</value> </array> </property> ``` 该配置将扫描 `com/tourInteraction/mapper/` 和 `com/tourInteraction/mapper/article/` 目录下的所有 XML 文件[^3]。 ### 多路径 XML 文件配置(混合路径) 如果 XML 文件分布在不同的目录结构中,可以使用 `classpath*:` 和 `classpath:` 混合的方式进行配置。例如,在 `application.yml` 中: ```yaml mybatis-plus: mapper-locations: - classpath*:mapper/**/*.xml - classpath:com/easy/admin/**/mapping/**/*.xml ``` 此配置将扫描 `resources/mapper/` 目录及其子目录下的 XML 文件,以及 `com/easy/admin/**/mapping/` 目录下的 XML 文件[^4]。 ### 总结 通过上述方式,可以灵活地配置 MyBatis 以支持多个路径的 Mapper 接口和 XML 文件。无论是使用注解、YAML 还是 XML 配置,都可以根据项目的实际需求进行调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值