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

Spring Boot + MyBatis Plus 项目中,entity和 XML 映射文件的查找机制

在 Spring Boot + MyBatis - Plus 项目中,entity(实体类)和 XML 映射文件的查找机制有其默认规则,也可通过配置调整,以下详细说明:

一、实体类(entity)的查找

MyBatis - Plus 能找到实体类,主要基于以下默认规则:

  1. 包扫描
    在项目启动类上,一般会有 @MapperScan 注解,例如 @MapperScan("com.neuedu.hisweb.mapper") ,它的作用是扫描指定包下的 Mapper 接口。同时,MyBatis - Plus 会根据 Mapper 接口中定义的泛型(如 BaseMapper<User> 里的 User ),去对应的包路径(通常是与 Mapper 接口有合理包层级关联,或者通过 @Entity@TableName 等注解配合)中查找实体类。只要实体类的包路径能被合理扫描到(项目的包结构符合 Spring Boot 组件扫描的默认规则,即启动类所在包为基础,扫描其下级包),就可以找到。
    比如你的项目启动类在 com.neuedu.hisweb 包下,那么 com.neuedu.hisweb.entity 包下的实体类,会被自动扫描识别,因为 Spring Boot 默认会扫描启动类所在包及其子包下的组件。
  2. 注解辅助
    实体类上的 @TableName 注解,用于指定该实体类对应的数据库表名,这也帮助 MyBatis - Plus 建立实体类和数据库表的映射关系,在操作数据库时能正确关联。

所以,实体类只要在合理的包路径下(能被 Spring Boot 组件扫描到),无需额外配置就能被找到 ,MyBatis - Plus 会基于 Mapper 接口泛型和包扫描机制定位到它们。

二、XML 映射文件的查找(分两种情况)

情况 1:使用 MyBatis - Plus 且主要用其自带 CRUD ,少用自定义 XML

如果项目中主要使用 MyBatis - Plus 提供的 BaseMapper 自带的 CRUD 方法(如 insertselectById 等 ),基本不用自己写 XML 映射文件,此时不需要额外配置 XML 路径,MyBatis - Plus 内部机制可正常工作。

情况 2:有自定义 XML 映射文件(如写复杂 SQL )

若有自定义的 XML 映射文件(比如放在 src/main/resources/mapper 目录,或者和 Mapper 接口同一目录等不同位置 ),默认情况下 MyBatis - Plus 不一定能直接找到,需要配置 mapper - locations 来指定路径 ,常见配置方式如下:

  • 在 application.yml 中配置

mybatis - plus:mapper - locations: classpath:mapper/*.xml  # 假设 XML 文件放在 resources/mapper 目录下,根据实际路径调整type - aliases - package: com.neuedu.hisweb.entity  # 实体类包路径,让 XML 中可直接用实体类名作为类型别名
  • 如果 XML 文件和 Mapper 接口放在同一目录(比如 com/neuedu/hisweb/mapper 下,和 xxxMapper.java 放一起 ),需要确保 Maven 打包时能把 XML 文件一起打进 classpath 。因为默认 Maven 只会把 src/main/resources 下的文件打包,Java 目录下的 XML 可能不会被打包进去,此时需要在 pom.xml 中添加资源过滤配置:

<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include>  <!-- 包含 Java 目录下的 XML 文件 --></includes></resource><resource><directory>src/main/resources</directory></resource></resources>
</build>

然后在 application.yml 中配置:

mybatis - plus:mapper - locations: classpath:com/neuedu/hisweb/mapper/*.xml  # 精确指定 XML 所在的包路径(和 Mapper 接口同一目录时)type - aliases - package: com.neuedu.hisweb.entity 

总结来说,实体类默认靠合理包扫描就能被找到;XML 映射文件若有自定义的,通常需要配置 mapper - locations 以及注意打包时的资源包含,除非遵循了 MyBatis - Plus 能自动识别的特殊规则(但这种情况较少,一般复杂项目都会有自定义 XML ,需要配置 ) 。你可根据自己项目是否有自定义 XML 映射文件,来判断是否需要额外配置。

相关文章:

  • CSS“多列布局”
  • 从代码学习深度强学习 - Dyna-Q 算法 PyTorch版
  • SnapViewer:解决PyTorch官方内存工具卡死问题,实现高效可视化
  • 一站式了解单例模式
  • 每天五分钟深度学习PyTorch:卷积和池化后图片会有什么变化?
  • 【Rust UDP编程】rust udp编程方法解析与应用实战
  • 【凌智视觉模块】rv1106 部署 ppocrv4 检测模型 rknn 推理
  • 行为模式-责任链模式
  • 宁德时代电解液创新研究荣登《自然》顶刊,案例解析电解液成分分析方法
  • Oracle 的AHF (Automatic Health Framework) 工具
  • ElasticSearch 操作索引与映射的API
  • JS开发node包并发布流程
  • 实战案例-FPGA的JESD204调试问题解析
  • 适配器模式深度解析:Java设计模式实战指南与接口兼容性解决方案
  • Python内置类型子类化的陷阱与解决方案
  • 快速上手驭码CodeRider二
  • 浅谈Linux中一次系统调用的执行过程
  • PHP框架在内容管理系统开发中的优势:效率、安全与扩展性!
  • JMeter 处理 UTF-16 转 UTF-8 乱码问题解决方案(deepseek)
  • arm服务器运行Jmeter报错问题UseG1GC
  • 网站设计培训班老师/seo排名赚挂机
  • 做动态网站的用工具/seo新闻
  • Wordpress 免费收款插件/网站seo怎么做
  • 黑客是如何攻击网站的/最新百度快速排名技术
  • 简述网站开发的流程/进入百度
  • 网站权重最高/关键词首页优化