在开发过程中我们会遇到逻辑删除的需求,在使用mybatis-plus的时候我们可以用@Tablelogic注解便捷的完成逻辑删除和相关查询。
使用@Tablelogic注解
在使用时需要在对应的实体类的逻辑删除字段上添加@Tablelogic注解。
例如:
@TableLogic
private Integer is_delete;
@TableLogic注解参数
在添加注解是我们也可以通过配置参数的方式达到自定义标识符的目的:
value = "" 默认的原值,默认为0;
delval = "" 删除后的值,默认为1;
@TableLogic(value="原值",delval="改值")
@TableLogic(value="0",delval="1")
private Integer is_delete;
@TableLogic注解的删除操作
调用BaseMapper的deleteById(id)或者调用IService的removeById(id)时添加注解和没有注解的数据库操作语句存在差异:
没有@TableLogic注解调用deleteById/removeById,直接删除数据。
SQL:delete from user where id = 1
有注解走Update方法
SQL:Update user set is_delete = 1 where id = 1
在我们调用mybatis封装好的删除方法时会默认使用update方法修改逻辑删除字段数据。
@TableLogic注解的查询操作
在使用mybatis-plus封装好的查询方法时会默认添加"is_delete=原值"的查询条件,如.list(),.page()等查询方法。
如果在存在注解的情况下删除数据,使用查询方法可以去除删除数据,当删除注解时又可以查询出删除数据,因为在去除注解后查询会去除逻辑查询的条件拼接,所以这时需要我们手动添加逻辑删除查询条件。
存在注解和不存在注解的查询sql可在控制台打印查看,我就不敲了。。。。。。