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

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.dtcms.com/a/291937.html

相关文章:

  • 基于Kubernetes的微服务CI/CD:Jenkins Pipeline全流程实践
  • 时序数据库 TDengine × Ontop:三步构建你的时序知识图谱
  • 【SVM】支持向量机实例合集
  • Dockerfile:镜像构建
  • 在资源受限单片机中使用printf等可变参函数时的陷阱(2025年7月22日)
  • DF与介质损耗
  • 深入解析谱聚类:RatioCut与Ncut的图拉普拉斯推导
  • AI AgentLLM架构演进的大逻辑和小脉络
  • RK3568 Linux驱动学习——SDK烧录
  • Docker 安装、常用命令、应用部署
  • Android接入RocketMQ的文章链接
  • JavaScript,发生异常,try...catch...finally处理,继续向上层调用者传递异常信息
  • 20250722在Ubuntu 24.04.2下配置编译RD-RK3588开发板的Android13的编译环境
  • 八大作业票(一) 动火安全作业证
  • 分布式高可用ELK平台搭建及使用保姆级教程指南
  • axios统一封装规范管理
  • 同步本地文件到服务器上的Docker容器
  • 学习做精准、自动化、高效的 GEO优化系统
  • 如何判断进程是否存活?Linux 系统中的核心方法解析
  • 【前端】ikun-pptx编辑器前瞻问题一: pptx的xml样式, 使用html能100%还原么
  • UE5 UI ScrollBox 滚动框
  • 报错error:0308010C:digital envelope routines::unsupported解决方案
  • 《Webpack热更新瓶颈突破:全链路优化指南》
  • Android KTX:让Kotlin开发更简洁高效的利器
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十九课——车牌识别的FPGA实现(1)车牌定位的预处理
  • 边缘计算网关赋能智慧农业:物联网边缘计算的创新应用与实践
  • vue apk返回键不好使
  • git push新版问题解决
  • ArrayList与顺序表
  • 【C++】继承和多态扩展学习