• MybatisPlus 版本升级日志(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配置)

    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);
  • 相关阅读:
    转:手册网(程序员开发手册相关网站)
    转:关于视频H264编解码的应用实现
    转:视频压缩的基本概念(x264解压包)
    转:MediaCoder H.264格式编码参数设置及详解
    转: 移动直播技术秒开优化经验
    关于阿里 weex 的使用与案例
    转:视频流服务架构解析(音视频格式介绍)
    转:移动端即时通讯系统实践
    转:GRADLE构建最佳实践
    转: Syslog协议介绍
  • 原文地址:https://www.cnblogs.com/xhq1024/p/16280187.html
Copyright © 2020-2023  润新知