@TableLogic
是 MyBatis-Plus(一个 MyBatis 的增强工具)提供的一个注解,用于实现逻辑删除功能。
逻辑删除并不是真正从数据库中删除记录,而是通过在数据库表中设置一个标记字段(通常是一个状态字段,如 is_deleted、status 等)来表示这条记录是否被删除。当查询、更新或删除数据时,MyBatis-Plus 会自动根据这个标记字段来过滤或更新数据。
当你在一个实体类的属性上使用 @TableLogic
注解时,MyBatis-Plus 会将这个属性识别为逻辑删除字段。你可以在 @TableLogic
注解中指定逻辑删除的值和未删除的值。
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("user")
public class User {
private Long id;
private String name;
@TableLogic
private Integer deleted;
}
在上面的例子中,deleted
字段被标记为逻辑删除字段。当你调用删除方法时,MyBatis-Plus 不会真的从数据库中删除对应的记录,而是将 deleted
字段的值更新为逻辑删除值(默认是 1)。当你查询数据时,MyBatis-Plus 会自动添加条件 deleted=0
来过滤掉已经被逻辑删除的记录。
你还可以自定义逻辑删除和未删除的值:
@TableLogic(value = "0", delval = "1")
private Integer deleted;
在这个例子中,未删除的记录 deleted
字段的值为 “0”,逻辑删除的记录 deleted
字段的值为 “1”。
使用逻辑删除功能可以使数据恢复变得容易,因为数据并没有真的被删除,但也要注意,这可能会导致数据库中存储了大量的无用数据,影响查询性能。在某些情况下,你可能需要定期清理这些逻辑删除的记录。