MyBatis Plus 逻辑删除字段配置教程 | 适配 Tinyint 类型
是的,MyBatis Plus 也支持适配逻辑删除。你可以按照以下方式配置:
在实体类中,添加一个标记逻辑删除的字段,比如 state:
public class User {
private Long id;
private String name;
private Integer age;
@TableLogic // 标记逻辑删除字段
private Integer state;
// getter/setter
}
在 MyBatis Plus 的全局配置中,添加逻辑删除的配置:
@Configuration
@MapperScan("com.example.mapper")
public class MybatisPlusConfig {
@Bean
public GlobalConfig globalConfig() {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSqlInjector(new LogicSqlInjector()); // 配置逻辑删除注入器
globalConfig.setMetaObjectHandler(new MyMetaObjectHandler()); // 配置自动填充器
globalConfig.setDbConfig(new GlobalConfig.DbConfig().setLogicDeleteField("state").setLogicDeleteValue("1").setLogicNotDeleteValue("0")); // 配置逻辑删除字段和值
return globalConfig;
}
}
其中,LogicSqlInjector 是 MyBatis Plus 提供的逻辑删除注入器,MyMetaObjectHandler 是自定义的自动填充器,可以根据需求实现。DbConfig 中的 logic-delete-field 表示逻辑删除的字段名,logic-delete-value 表示逻辑删除的值,logic-not-delete-value 表示未删除的值。
这样配置后,MyBatis Plus 会自动根据逻辑删除的配置生成相应的 SQL 语句,比如:
-- 逻辑删除
UPDATE user SET state=1 WHERE id=#{id} AND state=0
-- 查询未删除的数据
SELECT * FROM user WHERE state=0
-- 查询已删除的数据
SELECT * FROM user WHERE state=1
原文地址: https://www.cveoy.top/t/topic/mRCh 著作权归作者所有。请勿转载和采集!