实现逻辑删除的步骤 --MybatisPlus

这里写自定义目录标题


逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在数据库
1.配置全局的逻辑删除规则 在yml文件中配置
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
logic-delete-value: 1
logic-not-delete-value: 0
其中某字段的值为0表示逻辑不删除
2.给Bean加上逻辑删除注解@TableLogic

   /**
     * 是否显示[0-不显示,1显示]
     */
    @TableLogic(value = "1",delval = "0")
    private Integer showStatus;

 @Override
    public void removeMenusByIds(List<Long> longs) {
        //TODO  1检查当前删除的菜单,是否被别的地方引用

        //逻辑删除

        baseMapper.deleteBatchIds(longs);
    }
MyBatisPlus是一个基于MyBatis的代码生成器和持久层框架,它简化了数据操作,其中一个常用的功能就是实现逻辑删除逻辑删除通常不是通过直接删除记录,而是将一个字段标记为"已删除",比如`is_delete`字段默认值为0表示正常,1表示删除。 在MyBatisPlus中,你可以通过以下步骤来处理逻辑删除1. **配置全局通用Mapper**:在全局配置文件(如GlobalConfig.xml)中,设置全局启用逻辑删除功能,例如: ```xml <insert id="insertOrUpdate" parameterType="com.example.YourEntity"> INSERT INTO your_table (field1, field2) VALUES (#{field1}, #{field2}) ON DUPLICATE KEY UPDATE is_delete = #{isDelete} </insert> ``` 这里`isDelete`通常会默认传入1,如果插入新记录则什么都不做,如果更新已经存在的记录,则将其标记为已删除。 2. **实体类注解**:在你的实体类上添加`@TableLogic`注解,定义删除标志列和删除策略,如软删除: ```java @TableLogic( logicField = "is_delete", // 删除标志列名 deleteStrategy = LogicDeleteStrategy.REPLACE, // 删除策略:替换为0(非删除)、1(软删除) tableName = "your_table_name" // 如果不是默认表名,需要指定 ) private Integer isDelete; ``` 3. **CRUD操作**:在业务代码中,当你调用保存或更新方法时,默认会自动处理逻辑删除。如果你不想影响逻辑删除,可以显式地传入`updateEntity.setIsDelete(null)`来禁用该逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值