以下是使用 MyBatis-Plus 进行逻辑删除的简单步骤:
1. 在实体类中添加逻辑删除标识字段:
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("user")
public class User {
private Long id;
private String name;
// 逻辑删除标识字段,默认值为 0(未删除),1 表示已删除
@TableLogic
private Integer deleted;
}
在上述例子中,通过 @TableLogic 注解在实体类中添加了逻辑删除标识字段 deleted。
2. 配置全局逻辑删除属性:
在 MyBatis-Plus 的配置文件中,需要配置全局的逻辑删除属性,告诉 MyBatis-Plus 使用哪个字段来标识逻辑删除。可以使用 LogicSqlInjector 来实现逻辑删除。
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusPropertiesCustomizer;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.core.injector.LogicSqlInjector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusPropertiesCustomizer plusPropertiesCustomizer() {
return plusProperties -> plusProperties.getGlobalConfig().setSqlInjector(logicSqlInjector());
}
@Bean
public ISqlInjector logicSqlInjector() {
return new LogicSqlInjector();
}
}
在上述例子中,通过配置 LogicSqlInjector 设置全局的逻辑删除属性。
3. 使用逻辑删除进行查询:
在进行查询时,MyBatis-Plus 会自动帮你过滤掉被逻辑删除的记录。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public class UserService {
@Autowired
private IService<User> userService;
public List<User> listUsers() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 查询未被逻辑删除的记录
queryWrapper.eq("deleted", 0);
return userService.list(queryWrapper);
}
}
在上述例子中,通过在查询条件中增加 deleted 字段的条件,可以筛选出未被逻辑删除的记录。
逻辑删除可以很好地保留删除记录的信息,同时不会真正删除数据,适用于需要保留历史数据或具备恢复需求的场景。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7059/MyBatis