当前位置: 首页 > web >正文

SpringBoot--Mapper XML 和 Mapper 接口在不同包

🧩 背景说明

在 Spring Boot 中,MyBatis 默认要求 Mapper 接口和 XML 文件位于相同包路径
但在实际项目中,为了模块化或结构清晰,常将 XML 放在 resources/mybatis/... 下,这种做法就必须进行额外配置。


📁 示例目录结构

src/main/java
└── com/example/mapper└── UserMapper.javasrc/main/resources
└── mybatis/mappers└── UserMapper.xml  ← ❗ 不在同包下

✅ 解决方案

方式一:application.yml 配置

mybatis:mapper-locations: classpath:mybatis/mappers/*.xmltype-aliases-package: com.example.pojo  # 实体类包路径(可选)

方式二:application.properties 配置

mybatis.mapper-locations=classpath:mybatis/mappers/*.xml
mybatis.type-aliases-package=com.example.pojo

💡 通配符说明

配置路径含义说明
classpath:mybatis/mappers/*.xml匹配 mappers/ 下所有 XML 文件
classpath:mybatis/**/*.xml匹配多级子目录中的所有 XML 文件

⚠️ classpath: 起始路径是 resources/


🧠 注意事项

  • mapper-locations 是必须配置的(当 XML 和接口不在一起时)。

  • type-aliases-package 建议配置,可省略 XML 中类的全限定名。

  • 如果你使用的是多模块项目,建议使用 classpath*: 前缀来全局扫描。


🔍 @MapperScan 配置

在启动类中加上:

@MapperScan("com.example.mapper")  // Mapper 接口所在包
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

⚠️ 常见报错与原因

报错信息原因说明
Invalid bound statement (not found)XML 文件未被扫描
BindingException: Invalid bound statement同上
类路径很长不易读没配 type-aliases-package

✅ 总结一句话

当 Mapper 接口和 XML 文件不在同一包时,必须在配置文件中手动指定 XML 路径 mapper-locations,否则无法绑定 SQL 语句。

http://www.xdnf.cn/news/16099.html

相关文章:

  • halcon手眼标定z方向实操矫正
  • [2025CVPR]ViKIENet:通过虚拟密钥实例增强网络实现高效的 3D 对象检测
  • React 项目性能优化概要
  • vs2017 c++ 使用sqlite3数据库
  • 基于Kubernetes的微服务CI/CD:Jenkins Pipeline全流程实践
  • 如何编译RustDesk(Unbuntu 和Android版本)
  • MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
  • haproxy的负载均衡集群搭建
  • Rust实战:决策树与随机森林实现
  • 微博视觉算法面试30问全景精解
  • MDC(Mapped Diagnostic Context) 的核心介绍与使用教程
  • 【PTA数据结构 | C语言版】爱之匹配
  • 【C++】继承和多态扩展学习
  • 【上市公司变量测量】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现
  • Docker从入门到精通
  • IPv4枯竭时代:从NAT技术到IPv6的演进之路
  • SpringBoot6-10(黑马)
  • git的版本冲突
  • 【未限制消息消费导致数据库CPU告警问题排查及解决方案】
  • Vue 分析脚手架
  • stm32内存分析
  • 传输层协议
  • 基于MySQL实现分布式调度系统的选举算法
  • C 语言的指针复习笔记
  • Pytorch版本、安装和检验
  • AJAX 概念与 axios 使用
  • 深度解析 HTML `loading` 属性:优化网页性能的秘密武器
  • rancher使用rke在华为云多网卡的服务器上安装k8s集群问题处理
  • 4x4矩阵教程
  • YModem在Android上的实现(四)