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

【实操】Mybatis-plus2.x升级到3.x

第一步:修改pom.xml文件

  <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>2.2.0</version>
  </dependency>

修改为

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>

第二步:更改引用的文件路径

2.x引入的路径如下

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.service.IService;
import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.enums.SqlLike;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.dynamic.datasource.DS;

需要修改为,和上方一一对应进行全局修改即可

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.enums.SqlLike;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.dynamic.datasource.annotation.DS;

第三步:修改分页插件配置

在2.x中分页插件配置大概如下所示

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

修改为如下

   @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页插件
        interceptor.addInnerInterceptor(paginationInnerInterceptor());
        // 乐观锁插件
        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
        return interceptor;
    }

    /**
     * 分页插件,自动识别数据库类型
     */
    public PaginationInnerInterceptor paginationInnerInterceptor() {
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        // 分页合理化
        paginationInnerInterceptor.setOverflow(true);
        return paginationInnerInterceptor;
    }

    /**
     * 乐观锁插件
     */
    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
        return new OptimisticLockerInnerInterceptor();
    }

第四步:代码中Wrapper修改

需要对EntityWrapper 根据需要修改为QueryWrapper UpdateWrapper

第五步:修改方法

selectPage改为page
insert改为save
selectById改为getById
selectList改为list
setSqlSelect改为select
selectOne改为getOne
selectCount改为count 返回修改为Long类型
deleteById改为removeById
delete改为remove
selectObjs改为listObjs
andNew()改为.and(QueryWrapper->QueryWrapper.)
selectBatchIds改为listByIds
selectMap改为getMap
selectByMap改为listByMap
selectById改为getById
deleteBatchIds改为removeBatchByIds
deleteByMap改为removeByMap
deleteById改为removeById
insertOrUpdate改为saveOrUpdate
insertBatch改为saveBatch
selectMaps改为listMaps
insertOrUpdateBatch改为saveOrUpdateBatch
where改为apply
addFilterIfNeed改为apply
类似or(StringUtils.isNotBlank(deptId), "dept_id in (" + deptId + ")"))改为.or(StringUtils.isNotBlank(deptId), wrapper -> wrapper.apply("dept_id in (" + deptId + ")")))
 
orderBy需要根据需要修改为orderByAsc、orderByDesc,需要单独处理,无法批量修改
orderBy("xxx", false)改为orderByDesc("xxx")
orderBy("xxx", true)改为orderByAsc("xxx")

Pagination page改为Page page
IdType.UUID改为IdType.ASSIGN_UUID

第六步:修改关键字

在 MyBatis Plus 3.x 中,不再提供自动识别关键字进行处理的功能。处理数据库关键字的方法有以下几种:

  1. 不同数据库对关键字的处理方式不同,因此很难维护。在数据库设计时,建议避免使用关键字作为字段名或表名。

  2. 如果必须使用关键字,可以通过在字段或表名前后添加反引号(`)来进行处理【引号用的主键区第一排第一个按键(tab键上面的按键)】,如下所示:

@TableField(value = "`status`")
private Boolean status;

还有就是@TableId一个实体类中不能存在多个,不然会报错。

第七步:去除banner

配置如下

mybatis-plus:
  global-config:
    banner: false

第八步:调整数据库连接配置

2.x配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      master:
        type: ${spring.datasource.type}
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
        username: root
        password: root

调整为

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      primary: master
      datasource:
        master:
          type: ${spring.datasource.type}
          driverClassName: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
          username: root
          password: root

 

 

相关文章:

  • 基于深度学习的运动想象脑电信号分类研究
  • django如何配置使用asgi
  • LDAP从入门到实战:环境部署与配置指南(上)
  • 使用 Tkinter 编写简单计算器应用
  • JAVA多线程编程技术
  • 可发1区的超级创新思路:
  • LeetCode Hot100 刷题路线(Python版)
  • IoTDB写入数据后data目录为空
  • python爬虫解析器bs4,xpath,pquery
  • HR人员和组织信息同步AD域服务器实战方法JAVA
  • 基于ChatGPT、GIS与Python机器学习的地质灾害风险评估、易发性分析、信息化建库及灾后重建高级实践
  • 知识蒸馏:让大模型“瘦身“而不失智慧的魔术
  • Spark读取文件系统的数据(sbt打包测试)-入门级别Demo
  • AtCoder - arc086_d Shift and Decrement分析与实现
  • Python 3.13.2安装教程(安装包)Python 3.13.2 快速安装指南
  • Elasticsearch快速上手与深度进阶:一站式实战教程
  • 区块链技术在供应链管理中的应用与创新
  • istio 介绍-01-一个用于连接、管理和保护微服务的开放平台 概览
  • 如何在MCU工程中启用HardFault硬错误中断
  • AI提示词优化方法
  • 鄂州:锁死中小学教师编制总量,核减小学编制五百名增至初中
  • 解放军仪仗分队参加白俄罗斯纪念苏联伟大卫国战争胜利80周年阅兵活动
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 1450亿元!财政部拟发行2025年中央金融机构注资特别国债(二期)
  • 98年服装“厂二代”:关税压力下,我仍相信中国供应链|湃客Talk
  • 调节负面情绪可以缓解慢性疼痛