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
:表示存在的值
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论