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

Spring Boot 2.6.15 + MyBatis-Plus 3.5.1 升级至 3.3.2 + 3.5.7 全流程指南

Spring Boot 2.6.15 + MyBatis-Plus 3.5.1 升级至 3.3.2 + 3.5.7 全流程指南


一、核心依赖对比与关键变更

1.1 Spring Boot 父级依赖升级

<!-- 升级前 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.15</version>
</parent>

<!-- 升级后 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.2</version>
</parent>

关键变更
• JDK 17+ 强制要求(原为 JDK 1.8)
• Jakarta EE 9+ 命名空间替代 Java EE(所有 javax.* 需改为 jakarta.*


1.2 MyBatis-Plus 依赖重构

<!-- 升级前 -->
 <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

<!-- 升级后 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.7</version>
    <exclusions>
        <exclusion>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
        </exclusion>
    </exclusions>
</dependency>

关键变更
• 必须使用 mybatis-plus-spring-boot3-starter 适配 Spring Boot 3.x
• 显式排除旧版 SQL 解析器(避免与 JDK 17 冲突)

兼容性说明:MyBatis-Plus 3.5.7 是 Spring Boot 3.x 的专用适配版本,需使用 替代旧版 starter。

问题风险:需检查是否排除旧版依赖(如原 mybatis-spring-boot-starter 已注释掉,符合要求)。


1.3 编译环境调整

<!-- 升级前 -->
<plugin>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

<!-- 升级后 -->
<plugin>
    <configuration>
        <source>17</source>
        <target>17</target>
    </configuration>
</plugin>

必要性:Spring Boot 3.x 编译要求 JDK 17+ 字节码


二、配置层改造要点

2.1 MyBatis-Plus 配置适配

# 升级前配置
mybatis-plus:
  mapper-locations: classpath*:mapper/**/*.xml

# 升级后新增配置
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: auto

注意事项
• 移除 mybatis-spring-boot-starter 依赖(已由新 starter 包含)
• 分页插件需改用 MybatisPlusInterceptor 配置


2.2 分页插件重构示例

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

变更说明:旧版 PaginationInterceptor 已废弃


三、代码层适配策略

3.1 核心 API 变更适配

// 升级前用法
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1);

// 升级后推荐写法
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.eq(User::getStatus, 1);

优势:避免 SQL 注入风险,支持编译期字段检查


3.2 事务注解迁移

// 升级前
import javax.transaction.Transactional;

// 升级后
import jakarta.transaction.Transactional;

注意:需全局替换所有 javax.persistencejavax.servlet 引用


四、验证与调试

4.1 健康检查验证

management.endpoints.web.exposure.include=health,info

访问 /actuator/health 确认数据源状态


4.2 SQL 日志监控

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

作用:实时输出执行的 SQL 语句


五、典型问题解决方案

5.1 依赖冲突排查

mvn dependency:tree -Dincludes=com.baomidou,com.github.jsqlparser

常见冲突点
mybatis-plus-boot-starter 残留(需完全移除)
jsqlparser 版本需 ≥4.9(已通过 exclusion 解决)


5.2 自动填充失效

@Component
public class MetaHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
    }
}

修复要点:必须实现 strictInsertFill 方法


六、升级后技术全景

组件升级前版本升级后版本关键特性
Spring Boot2.6.153.3.2原生支持 JDK 17 LTS,Jakarta EE 9+
MyBatis-Plus3.5.13.5.7增强 Lambda 表达式支持,分页插件重构
SQL 解析器jsqlparser 3.2jsqlparser 4.9支持 JDK 17 语法特性

参考资料
MyBatis-Plus 3.5.7 官方升级日志
Spring Boot 3.x 迁移指南

相关文章:

  • C++——析构函数
  • ide技术
  • CANoe CAPL——TCP/IP函数
  • 基于内容的课程推荐网站的设计与实现00(SSM+htmlL)
  • Vue3 数据流革命:单项数据流与 defineModel 的深度解析
  • 【Leetcode 每日一题】368. 最大整除子集
  • 设计模式简述(十一)装饰器模式
  • Android studio局域网屏幕共享(旧手机可以用来当监控啦)
  • 虚幻5学习笔记,疑点
  • 力扣刷题-热题100题-第32题(c++、python)
  • 玩转大语言模型——使用华为官方MindIE-Server镜像方式部署DeepSeek模型
  • 编程基础 0 到 1 1768. 交替合并字符串
  • 蓝桥杯 日期统计(刷题笔记)
  • C++多线程编码二
  • 软件学报 2024年 区块链论文 录用汇总 附pdf下载
  • httpx模块的使用
  • Java中的同步和异步
  • 语法: result=ldexp (value, exp);
  • PHP 安全 E-mail
  • MatterGen-加速材料发现
  • pycharm 做网站哪个好/今日头条关键词排名优化
  • 西安专业网站开发公司/查指数
  • wordpress搭建小程序/优化大师是干什么的
  • 福建建设工程招投标信息网/佛山做优化的网络公司
  • 织梦软件开发网站模板下载/学校seo推广培训班
  • 怎样做电商网站/杭州seo搜索引擎优化