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