在spring-boot项目中,想要逻辑删除,需要在数据库中新增一列,用于标识是否筛选的时候进行显示。
比如设置字段deleted,默认值0,表示未删除,删除时,将该字段修改为1,表示已删除,在筛选时添加where deleted = 0的筛选条件。
以上使用sql语句需要手动去写,而在mybatis-plus中,提供了这样一种注解 @TableLogic 。在实体类中,将该注解标识在deleted字段上,并在yml文件中对其进行全局配置,即可通过removeById自动实现逻辑删除,使用@Delete即可,不需要再使用@Update手动修改。
yml 配置:
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted # set deleted logicDelete
logic-delete-value: 1 # deleted
logic-not-delete-value: 0 # exist
在配置该注解之前,使用removeById后,查看数据库,会将数据真实删除,数据库中该数据会消失,而在配置后,使用removeById,会只修改deleted字段为1,并且在使用mybatis-plus中的查询方法,如 .list() 等,会让deleted = 1的数据不显示。
注意:
由于配置了该注解,在使用setDeleted(1)的方法并进行updateById()时,该方法不再生效。而注释掉注解和配置后,该方法能够生效。注意单独注释掉注解是无法生效的。
但是如果在配置后使用sql语句在mapper文件中进行更改,这个是可以生效的,大概是因为直接对数据库操作,所以idea管不了。
更多推荐
mybatis逻辑删除
发布评论