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
    

    条件构造器

    详情参考官方文档

  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/qq188380780/p/12595982.html
Copyright © 2011-2022 走看看