SpringBoot3.5整合Mybatis-Plus全解析:原理、实战与最佳实践

  • 时间:2025-11-30 21:40 作者: 来源: 阅读:4
  • 扫一扫,手机访问
摘要:数据库访问层已经跑通,接口能拿到数据,分页也对了,总条数正确,控制台打印的 SQL 看起来干净利索。启动日志没报错,查了下配置,Spring Boot3.5 和 Mybatis-Plus 配合得很顺手。说实话,改一次配置后省了不少手工写 SQL 的活儿。先说最后一步怎么确认的。把服务起起来后,用 Postman 调了几次接口,观察到几件事:一是控制台打印了自动生成的 SQL,带上了分页参数;二是分

数据库访问层已经跑通,接口能拿到数据,分页也对了,总条数正确,控制台打印的 SQL 看起来干净利索。启动日志没报错,查了下配置,Spring Boot3.5 和 Mybatis-Plus 配合得很顺手。说实话,改一次配置后省了不少手工写 SQL 的活儿。

SpringBoot3.5整合Mybatis-Plus全解析:原理、实战与最佳实践

先说最后一步怎么确认的。把服务起起来后,用 Postman 调了几次接口,观察到几件事:一是控制台打印了自动生成的 SQL,带上了分页参数;二是分页接口返回了正确的 total 和 records;三是逻辑删除字段在查询时被自动过滤掉了;四是在生产环境把 SQL 日志关掉后,控制台不再输出敏感信息。这些都说明基础链路没问题。顺带一提,检查 SQL 执行效率时,发现配合 Mybatis-Plus 的缓存和 Spring Boot 的资源加载优化后,数据库访问延迟有明显下降,这点可以量化。

回溯到上一步,测试通过前需要完成的几件事比较具体。pom.xml 中加入 mybatis-plus-boot-starter,Spring Boot 的其它依赖按常规写就行,不需要单独再加 Mybatis 原生包。资源目录下放 application.yml,里面写好数据源配置和 Mybatis-Plus 的核心参数。不要再去弄 mybatis-config.xml,那玩意儿基本可以省掉。接着实现实体类,用 Lombok 简化 getter/setter,同时用 Mybatis-Plus 的注解把字段映射好(列如逻辑删除字段要加 @TableLogic)。Mapper 接口继承 BaseMapper,就能拿到增删改查的通用操作,XML 基本不用写。业务层可选地继承 IService 和 ServiceImpl,把复杂逻辑放在服务层。Controller 写接口用来联调,直接调用 Service 或 Mapper 层即可验证功能。

分页功能需要额外配置一个分页插件。写一个配置类,注册分页拦截器,版本要配套。如果不配分页插件,分页查询会出现 total 为 0 的问题。别忘了在 application.yml 中打开下划线转驼峰映射
mybatis-plus.configuration.map-underscore-to-camel-case: true,字段名映射问题就不会出现。还有一点,Mapper 接口找不到时,多半是扫描路径没配对,解决办法是确认
mybatis-plus.mapper-locations 的配置,或者在启动类上加 @MapperScan("com.example.demo.mapper"),必要时给 Mapper 加上 @Repository 标注。

说说整合原理层面。Spring Boot 的自动配置机制会扫描类路径下的自动配置清单,加载相应的自动配置类,Mybatis-Plus 提供的 auto configuration 会在这个阶段起作用,基于引入的 starter,自动识别数据源配置,初始化 SqlSessionFactory、MapperScannerConfigurer 等关键组件。Mybatis-Plus 在 Mybatis 的原生流程里插入自己的增强点,列如自动生成 SQL、分页拦截、乐观锁实现等,实质上是通过扩展 SqlSessionFactory 的方式把增强逻辑接入。Spring Boot3.5 在 Bean 初始化和资源加载上做了优化,结合 Mybatis-Plus 的 SQL 优化器和缓存,整体访问延时能下降一些,这从启动性能和请求响应里都能看到。

具体版本方面,实践里我用的是 Spring Boot3.5.3 和 Mybatis-Plus3.5.4.1,这两者在兼容性上没出大问题。要注意版本匹配,Spring Boot3.x 系列最好用 Mybatis-Plus 3.5.3 及以上。还要留心和分页插件、连接池等中间件的版本一致性,避免由于版本冲突导致奇怪的错误。

实际开发中会遇到一些常见坑,列几条并说明缘由和对应办法。Mapper 接口找不到:一般是由于 Mapper 没被正确扫描,或者路径写错;解决:确认
mybatis-plus.mapper-locations、加 @MapperScan,必要时手动给 Mapper 标注 @Repository。分页 total 为 0:说明分页插件没注册或版本不兼容;解决:注册 Mybatis-Plus 的分页拦截器,确保版本一致。下划线转驼峰不生效:忘记把
map-underscore-to-camel-case 打开。逻辑删除无效:实体类没加 @TableLogic 或配置项字段名写错。SQL 日志提议在生产中关掉,配置项是
mybatis-plus.configuration.log-impl,避免泄露敏感信息。

关于性能和扩展,有几项提议可以直接落地。数据库连接池用 Druid 或 HikariCP,可以显著提升并发表现,配置连接池参数要根据业务负载调。热点查询可以加 Redis 做缓存,Mybatis-Plus 支持 @CacheNamespace,也可以配合 Spring Cache。大项目减少重复性代码时,可以使用 Mybatis-Plus 的代码生成器 AutoGenerator,把 Entity、Mapper、Service、Controller 等模板生成出来。多数据源场景可以引入
dynamic-datasource-spring-boot-starter 做动态切换。读写分离可以思考和 Sharding-JDBC 联动,把读写压力分开。要做容器化和云原生部署的话,Spring Boot3.5 对 GraalVM 原生镜像提供了适配支持,这对冷启动有协助。

配置示例方面要注意细节。application.yml 里写好数据源、mybatis-plus 的全局配置(例如逻辑删除字段名、下划线映射等),不要遗漏 mapper 或 xml 的位置配置。分页插件写在一个配置类里,作为 @Bean 注入。实体类里用好 @TableName、@TableId、@TableField 等注解,逻辑字段加 @TableLogic。Mapper 继承 BaseMapper,Service 继承 IService 并用 ServiceImpl 实现。Controller 直接注入 Service 做接口测试,起服务后看控制台 SQL 日志确认自动生成的语句是否符合预期,分页是否生效。

最后一点实操提示:如果启动时报错找不到 Mapper,别急着改实体,先核对启动类和配置里扫描路径;分页问题先看分页拦截器是否被加载;版本异常时回退到兼容的 Mybatis-Plus 与 Spring Boot 组合。把 mybatis-plus 的版本锁定到 3.5.4.1,然后根据项目需要再选择连接池、缓存和多数据源方案,按部就班把每一步验证通过。

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部