mybatisplus实现逻辑删除
时间: 2024-11-23 22:25:27 浏览: 39
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)`来禁用该逻辑。
阅读全文