官方文档关于逻辑删除的描述
Gitee官方示例代码
mybatis-plus 逻辑删除无法做自动填充的问题
mybatisplus 结果_Mybatis Plus学习笔记(逻辑删除/动态填充/常用插件)
我是用的 MyBatis 版本为 2.2.1,MyBatis-Plus 版本为 3.5.0。
下面直接上代码。
package com.gtcom.backstage.injector;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.extension.injector.methods.LogicDeleteByIdWithFill;
import java.util.List;
public class MySqlInjector extends DefaultSqlInjector {
@Override
public List getMethodList(Class> mapperClass, TableInfo tableInfo) {
//继承原有方法
List methodList = super.getMethodList(mapperClass, tableInfo);
//注入新方法
methodList.add(new LogicDeleteByIdWithFill());
return methodList;
}
}
package com.gtcom.backstage.configuration;
import com.gtcom.backstage.injector.MySqlInjector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public MySqlInjector sqlInjectorPlus() {
return new MySqlInjector();
}
}
package com.gtcom.backstage.injector; import com.baomidou.mybatisplus.core.mapper.baseMapper; public interface MybaseMapperextends baseMapper { int deleteByIdWithFill(T entity); }
使用代码:
这里注意直接继承 MybaseMapper,而不是 MyBatis-Plus 提供的 baseMapper。
package com.gtcom.backstage.mapper; import com.gtcom.backstage.entity.OutputUser; import com.gtcom.backstage.injector.MybaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface OutputUserMapper extends MybaseMapper{ }
具体调用代码:
OutputUser outputUserForUpdate = new OutputUser(); outputUserForUpdate.setId(userId); outputUserMapper.deleteByIdWithFill(outputUserForUpdate);
执行的 SQL:
UPDATE output_user SET update_time = ?, deleted = 1 WHERe id = ? AND deleted = 0
可以看出 update_time 字段已经被自动填充上了。



