zoukankan      html  css  js  c++  java
  • SpringBoot ---- Mybatis Plus 插件

    自动填充

    注解实体字段

    public class User {
      
      @TableField(fill = FieldFill.INSERT)
      private Date createTime;
      @TableField(fill = FieldFill.INSERT_UPDATE)
      private Date updateTime;
    }
    

    自定义实现类

    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
      	//
        @Override
        public void insertFill(MetaObject metaObject) {
            this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
            this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
            /* 上面选其一使用,下面的已过时(注意 strictInsertFill 有多个方法,详细查看源码) */
            //this.setFieldValByName("operator", "Jerry", metaObject);
            //this.setInsertFieldValByName("operator", "Jerry", metaObject);
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            log.info("start update fill ....");
            this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
            this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug请升级到之后的版本如`3.3.1.8-SNAPSHOT`)
            /* 上面选其一使用,下面的已过时(注意 strictUpdateFill 有多个方法,详细查看源码) */
            //this.setFieldValByName("operator", "Tom", metaObject);
            //this.setUpdateFieldValByName("operator", "Tom", metaObject);
        }
    }
    

    乐观锁插件

    需要数据库表中加入 version 字段

    注解实体字段 @Version

    @Version
    private Integer version
    

    编写配置类

    @Configuration
    @MapperScan("")  // 可以写在这里或者启动类上面
    public class MybatisPlusConfig {
      
      	// 乐观锁插件
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }
    }
    

    分页插件

    编写配置类

    @Configuration
    @MapperScan("")  // 可以写在这里或者启动类上面
    public class MybatisPlusConfig {
      
      	// 分页插件
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            // paginationInterceptor.setOverflow(false);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            // paginationInterceptor.setLimit(500);
            // 开启 count 的 join 优化,只针对部分 left join
            // paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }
    

    分页查询

    public Test{
      
        @Test
        void testPage() {
            // 创建 Page 对象,传入 当前页 和 每页记录数
       			Page<User> page = new Page<>(1,5);
            // 分页查询
          	userMapper.selectPage(page, null);
          	
            /**
             * 分页数据
             * page.getCurrent()  ---- 当前页
             * page.getPages()    ---- 总页数
             * page.getSize()     ---- 每页记录数
             * page.getTotal()    ---- 总记录数
             * page.getRecords()  ---- List 集合
             * page.hasNext()     ---- 下一页
             * page.hasPrevious() ---- 上一页
             */
        }
    }
    

    逻辑删除

    需要在数据可添加 deleted 字段

    注解实体字段 @TableLogic

    @TableLogic
    private Integer deleted;
    

    编写配置类

    3.1.1开始不再需要这一步

    // 
    @Configuration
    public class MyBatisPlusConfiguration {
    
        @Bean
        public ISqlInjector sqlInjector() {
            return new LogicSqlInjector();
        }
    }
    

    性能分析插件

    编写配置类

    仅推荐开发使用,线上不推荐

    @Configuration
    @MapperScan("com.baomidou.cloud.service.*.mapper*")
    public class MybatisPlusConfig {
    
        /**
         * SQL执行效率插件
         */
        @Bean
        @Profile({"dev","test"})// 设置 dev test 环境开启
        public PerformanceInterceptor performanceInterceptor() {
            // 使用默认配置
            // return new PerformanceInterceptor();
            
            // 自定义配置
            PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
            performanceInterceptor.setMaxTime(100);// 单位:ms,超过则不执行
            performanceInterceptor.setFormat(true);  // SQL 格式化
            return performanceInterceptor;
        }
    }
    

    设置 dev 环境

    可以针对各环境新建不同的配置文件application-dev.propertiesapplication-test.propertiesapplication-prod.properties

    #环境设置:dev、test、prod
    spring.profiles.active=dev
    

    条件构造器

    详情参考官方文档

  • 相关阅读:
    fiber
    ACM用到的算法。先做个笔记,记一下
    matlab安装及破解
    银行家算法
    网络安全(超级详细)零基础带你一步一步走进缓冲区溢出漏洞和shellcode编写!
    心脏滴血漏洞复现(CVE-2014-0160)
    KMP算法分析
    利用BURPSUITE检测CSRF漏洞
    BURPSUITE爆破密码
    动态规划—最长回文子串LEETCODE第5题深度剖析
  • 原文地址:https://www.cnblogs.com/qq188380780/p/12595982.html
Copyright © 2011-2022 走看看