是的,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
MyBatis Plus 逻辑删除字段配置教程 | 适配 Tinyint 类型

原文地址: https://www.cveoy.top/t/topic/mRCh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录