MyBatis 逻辑删除

在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管不了。

猜你喜欢

转载自blog.csdn.net/u014641168/article/details/130320848