Mybatis-Plus 版本升级日志(3.1.0 -> 3.5.1)

前言

最近看了下mp的官网更新日志,版本已经更新到3.5.1了(2022.01.25),优化了不少地方,之前太忙没时间升级,最近有闲下来时间那就搞一搞。

Mybatis-Plus官网地址

3.1.0老版本配置回顾

具体操作

1.pom修改

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

2.yml配置(基本没有变化,删除了id-type配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mybatis-plus:
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapper-locations: your.mapper.package
  #实体扫描
  typeAliasesPackage: your.entity.package
  global-config:
    # 数据库相关配置
    db-config:
      #字段策略 IGNORED:"忽略判断", NOT_NULL:"非 NULL 判断", NOT_EMPTY:"非空判断"
      field-strategy: not_empty
      #驼峰下划线转换
      column-underline: true
      #数据库大写下划线转换
      capital-mode: true
      #table-prefix: sys_
      #逻辑删除配置
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0
      # 数据库类型
      db-type: mysql
    #刷新mapper 调试神器
    refresh: true
  # 原生配置
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    # 打印sql日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3.插件配置

新版插件使用拦截器方式来配置

复制代码
@Configuration
@MapperScan({"scan.your.mapper.package"})
public class MybatisPlusConfig {

    /**
     * 3.3.0之后的新版插件配置
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //分页插件(根据实际情况指定数据库类型,具体查看DbType枚举)
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //乐观锁插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        //逻辑删除插件不需要再单独配置

        //防止全表更新
        //interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        //paginationInnerInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        //paginationInnerInterceptor.setMaxLimit(500L);


        return interceptor;
    }   
}
复制代码

4.自定义自动填充字段处理器

复制代码
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}
复制代码

5.Entity基类

复制代码
public class BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 主键id @JSONField该注解是解决Long类型太长传值前端精度丢失 */
    /** id生成算法 ASSIGN_ID(雪花算法) (新版本去掉了id_woker)这里配置了以后yml配置文件里无需再指定id-type,其他id生成方式查看IdType枚举 */
    @JSONField(serializeUsing= ToStringSerializer.class)
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /** 创建时间 插入自动填充 */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 更新时间 插入和更新自动填充 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;/** 逻辑删除 0:正常 1:删除 (新版本只需在此配置即可) */
    @TableLogic
    private Integer deleted;

    /** 乐观锁 */
    @Version
    private Integer version;
}
复制代码

6.count()方法

//count()方法返回值类型从int改为long
Long count = baseMapper.selectCount(query);

 

posted @   猿了个码  阅读(5306)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示