Mybatis-Plus 插件学习

Posted lemos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis-Plus 插件学习相关的知识,希望对你有一定的参考价值。

官方指南

 

1.逻辑删除

在相应字段上添加注解

@TableLogic
private Integer deleted;

说明:

 使用mp自带方法删除和查找都会附带逻辑删除功能 (自己写的xml不会)

example
删除时 update user set deleted=1 where id =1 and deleted=0
查找时 select * from user where deleted=0

  

2.通用枚举类

比如一些状态属性

① 声明枚举

定义枚举

public enum AgeEnum implements IEnum<Integer> {
    ONE(1, "一岁"),
    TWO(2, "二岁"),
    THREE(3, "三岁");
    
    private int value;
    private String desc;
    
    @Override
    public Integer getValue() {
        return this.value;
    }
}

使用枚举

public class User{
    /**
     * 名字
     * 数据库字段: name varchar(20)
     */
    private String name;
    
    /**
     * 年龄,IEnum接口的枚举处理
     * 数据库字段:age INT(3)
     */
    private AgeEnum age;
        
        
    /**
     * 年级,原生枚举(带{@link com.baomidou.mybatisplus.annotation.EnumValue}):
     * 数据库字段:grade INT(2)
     */
    private GradeEnum grade;
}

②配置扫描枚举

mybatis-plus:
    # 支持统配符 * 或者 ; 分割
    typeEnumsPackage: com.baomidou.springboot.entity.enums
  ....

  

 3.自动填充功能

自动填充,意味着就是设置默认值,不依赖数据库设置默认值,依赖程序实现。

定义填充方法

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);

    @Override
    public void insertFill(MetaObject metaObject) {
        LOGGER.info("start insert fill ....");
        this.setFieldValByName("operator", "Jerry", metaObject);//版本号3.0.6以及之前的版本
        //this.setInsertFieldValByName("operator", "Jerry", metaObject);//@since 快照:3.0.7.2-SNAPSHOT, @since 正式版暂未发布3.0.7
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        LOGGER.info("start update fill ....");
        this.setFieldValByName("operator", "Tom", metaObject);
        //this.setUpdateFieldValByName("operator", "Tom", metaObject);//@since 快照:3.0.7.2-SNAPSHOT, @since 正式版暂未发布3.0.7
    }
}

使用填充

public class User {

    // 注意!这里需要标记为填充字段
    @TableField(.. fill = FieldFill.INSERT)
    private String fillField;

    ....
}

fill 属性 可选值

public enum FieldFill {
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新填充字段
     */
    INSERT_UPDATE
}

  

 

 

233

以上是关于Mybatis-Plus 插件学习的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis-plus工具学习笔记---[常用注解,条件构造器,插件使用]

MybatisPlus 学习MyBatisX 插件

MybatisPlus 学习MyBatisX 插件

MyBatis-Plus逆向生成代码

MyBatis-Plus逆向生成代码

Mybatis-Plus:代码生成器(通过 AutoGenerator快速生成 EntityMapperXMLServiceController代码)MybatisX 快速开发插件