zoukankan      html  css  js  c++  java
  • mybatis-plus-扩展使用

    1.开启日志功能,在yml配置文件添加配置
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

      

    2.主键生成策略, 在主键ID上添加注解即可,关于id生成的一些策略:https://www.cnblogs.com/haoxinyue/p/5208136.html

       // 默认 ID_WORKER
        @TableId(type = IdType.ID_WORKER_STR)
        private Long id;
    

      

    public enum IdType { 
      // 自增
      AUTO(0),
      NONE(1),
      // 手动输入
      INPUT(2),
      // 唯一id生成器
      ID_WORKER(3),
      // uuid
      UUID(4),
      // 唯一id生成器(字符串类型)
      ID_WORKER_STR(5); }

      

    3.更新策略,数据添加两个时间字段,create_time、update_time 添加时间、修改时间,添加时间字段、注解,编写注解的处理器

      // 时间的操作(自动更新)
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Date updateTime;
    

      

    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    // MetaObjectHandler 元对象处理
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
        // 插入的策略
        @Override
        public void insertFill(MetaObject metaObject) {
            // this.setFieldValByName()设置当前字段的值!
            // String fieldName, Object fieldVal, MetaObject metaObject
            // 以后只要是插入操作就会自动控制
            // createTime updateTime 使用 new Date() 进行填充
    
            this.setFieldValByName("createTime",new Date(),metaObject);
            this.setFieldValByName("updateTime",new Date(),metaObject);
        }
    
        // 更新策略
        @Override
        public void updateFill(MetaObject metaObject) {
            this.setFieldValByName("updateTime",new Date(),metaObject);
        }
    
    }
    

      

    4.乐观锁,数据库添加version字段(int)version,添加version注解到字段上面,添加 乐观锁插件即可,就自动带上了版本号

      @Version
        private Integer version;
    

      

    import com.baomidou.mybatisplus.core.injector.ISqlInjector;
    import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
    import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    public class MPconfig {
    
        // 注入人家写好的插件处理器
        // 本质是一个拦截器 Interceptor
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }
    
      
    
    }
    

      

    5.分页查询

    在上面的 MPconfig 添加插件

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

      

    6.逻辑删除Delete,数据添加字段(int)deleted,实体类添加字段及注解

    在上面的 MPconfig 添加插件

      @TableLogic // 逻辑删除字段!
        private Integer deleted;
    

      

     // 逻辑删除插件!
        @Bean
        public ISqlInjector sqlInjector() {
            return new LogicSqlInjector();
        }
    

      

    7.性能分析

    在上面的 MPconfig 添加插件

     // SQL执行效率插件
        @Bean
        @Profile({"dev","test"})// 设置 dev test 环境开启
        public PerformanceInterceptor performanceInterceptor() {
            PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
            // 允许执行的sql的最长时间 , 默认的单位是ms
            performanceInterceptor.setMaxTime(1000);
            performanceInterceptor.setFormat(true); // 格式化SQL代码
            return performanceInterceptor;
        }
    

      

    最后完整的插件配置类

    import com.baomidou.mybatisplus.core.injector.ISqlInjector;
    import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
    import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    
    @Configuration
    public class MPconfig {
    
        // 注入人家写好的插件处理器
        // 本质是一个拦截器 Interceptor
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }
    
        // 分页插件
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    
        // 逻辑删除插件!
        @Bean
        public ISqlInjector sqlInjector() {
            return new LogicSqlInjector();
        }
    
        // SQL执行效率插件
        @Bean
        @Profile({"dev","test"})// 设置 dev test 环境开启
        public PerformanceInterceptor performanceInterceptor() {
            PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
            // 允许执行的sql的最长时间 , 默认的单位是ms
            performanceInterceptor.setMaxTime(1000);
            performanceInterceptor.setFormat(true); // 格式化SQL代码
            return performanceInterceptor;
        }
    
    }
    

      

  • 相关阅读:
    译文-浏览器下载图片的方式和时间点
    总结一下各种0.5px的线
    CSS3渐变效果工具
    [CSS]《CSS揭秘》第四章——视觉效果
    如何机制地回答浏览器兼容性问题
    如何更愉快地使用em —— 别说你懂CSS相对单位
    CSS学习(二):背景图片如何定位?
    React-简单通用的抛物线动画
    如何更愉快地使用rem —— 别说你懂CSS相对单位
    linuxC进程间通信的几种方式
  • 原文地址:https://www.cnblogs.com/418836844qqcom/p/14130158.html
Copyright © 2011-2022 走看看