开发者

mybatisPlus实现逻辑删除,自动生成创建时间和更新时间方式

目录
  • myBATisPlus逻辑删除,自动生成创建时间和更新时间
    • FieldFill枚举类中有三个值
    • 在这里我只用到了插入和更新
    • 实体类
  • 总结

    mybatisPlus逻辑删除,自动生成创建时间和更新时间

    下面是一个抽象类,由于这3个属性每个表都要用到,所以用一个抽象类写好属性,被实体类继承

    @TableField(fill = FieldFill.INSERT)中fill表示填充字段的方式。

    FieldFill枚举类中有三个值

    • FieldFill.DEFAULT:默认不做任何填充;
    • FieldFill.INSERT:插入时填充字段;
    • FieldFill.UPDATE:更新时填充字段。

    在这里我只用到了插入和更新

    @TableLogic是用于标识逻辑删除的字段。

    在删除时,不会真正删android除数据库表中的数据,而是将其标记为已删除状态。

    package com.abc.booksys.domain;
    
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableLogic;
    import com.baomidou.mybatisplus.annotation.Version;
    
    import Java.util.Date;
    
    jspublic abstract class ValueObject {
    
        //   图书创建时间  (执行MP的自动FIL编程客栈L操作,当增加记录的时候)
        @TableField(fill = FieldFill.INSERT)
        private Date createTime;
        //   图书修改时间
        @TableField(fill=FieldFill.INSERT_UPDATE)
        private Date updateTime;
    
        @TableLogic
        private int isDeleted;
    }

    MyMetaObjectHandler.java

    package com.abc.booksys.utils;
    
    import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.ibatis.reflection.MetaObject;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    @Slf4j
    @Component   //自定义一个MetaObjectHandler的实现类,注入到容器中,就会被MP自动识别,并使用
    public class MyMetaObjectHandler implements MetaObjectHandler {
    
        @Override
        public void insertFill(MetaObject metaObject) {
            log.info("start insert fill ....");
            metaObject.setValue("createTime", new Date());
            metaObject.setValue("updateTime", new Date());
        }
    
        @Override
        public void updateFill(MetaObject metaObject) {
            log.info("start update fill ....");
            metaObject.setValue("updateTime", new Date());
        }
    
    }

    实体类

    package com.abc.booksys.domain;
    
    
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import com.abc.booksys.domain.ValueObject;
    @Data
    @NoArgsConstructor
    @TableName("tbl_book")
    public class Book extends ValueObject{
     编程客栈   @TableId("isbn")
        private String isbn;
        private String name;
        private double price;
    }

    yml文件

    #mybatis-plus配置
    mybatis-plus: 
        #逻辑删除
      global-config:
        db-config:
          logic-delete-field: is_deleted
          logic-delete-value: 1
          logic-not-delete-value: 0

    其中:

    logic-delete-field用于绑定逻辑删除的数据库中的字段属性

    • logic-delete-value:表示已删除的值
    • logandroidic-not-delete-value:表示存在的值

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜