码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis-plus-扩展使用

时间:2020-12-18 13:03:20      阅读:3      评论:0      收藏:0      [点我收藏+]

标签:return   string   cep   添加   自动   对象   好的   core   控制   

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;
    }

}

  

mybatis-plus-扩展使用

标签:return   string   cep   添加   自动   对象   好的   core   控制   

原文地址:https://www.cnblogs.com/418836844qqcom/p/14130158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!