当前位置: 代码网 > it编程>编程语言>Java > mybatisPlus实现逻辑删除,自动生成创建时间和更新时间方式

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

2024年09月22日 Java 我要评论
mybatisplus逻辑删除,自动生成创建时间和更新时间下面是一个抽象类,由于这3个属性每个表都要用到,所以用一个抽象类写好属性,被实体类继承@tablefield(fill = fieldfill

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

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

@tablefield(fill = fieldfill.insert)中fill表示填充字段的方式。

fieldfill枚举类中有三个值

  • fieldfill.default:默认不做任何填充;
  • fieldfill.insert:插入时填充字段;
  • fieldfill.update:更新时填充字段。

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

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

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

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;

public abstract class valueobject {

    //   图书创建时间  (执行mp的自动fill操作,当增加记录的时候)
    @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:表示已删除的值
  • logic-not-delete-value:表示存在的值

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com