1.数据库中添加字段deleted
2.实体类中添加字段
//逻辑删除
@TableField(fill = FieldFill.INSERT)
@TableLogic
private Integer deleted;
3.配置默认值
2种方式
1.类中配置
package com.example.test.mpdemo.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.Date;
@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("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
//添加乐观锁默认值是1
this.setFieldValByName("version",1,metaObject);
//添加逻辑删除的默认值0
this.setFieldValByName("deleted",0,metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
LOGGER.info("start update fill ....");
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
2.配置文件中配置
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
4.配置逻辑删除的插件
/**
* 逻辑删除的插件
*/
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
5.测试
//根据id删除
@Test
public void testDeleteById(){
int i = userMapper.deleteById(1224552799728091138L);
System.out.println(i);
}
可以看到sql语句是:
数据库deleted字段已经变为1