1. 介绍
介绍如何使用数据逻辑删除的插件. 已实现对所以动态方法的兼容.
已验证可以和multiTenancy多租户插件配合使用.
2. 使用
2.1. 使用gradle 插件
2.1.1. 添加插件
gradle中
implementation('org.yunchen.gb:gb-plugin-logical-delete:1.4.0.0.M1')
3. 使用
3.1. domain类修改
在domain类上实现相关trait
class BaseUser implements LogicalDelete<BaseUser>{ (1)
.....
static mapping = {
deleted column:"delFlag" (2)
}
}
1 | 标记实现trait后, domain类会自动添加deleted字段 |
2 | 可以将其映射为其他物理字段 |
3.2. 操作方法
原先的delete方法变为逻辑删除,执行后,将数据库字段设置为true
BaseUser user=BaseUser.get(1L)
user.delete(flush:true)
数据恢复操作为:
user.unDelete(flush: true)
数据物理删除为:
user.delete(hard: true)
3.3. 查询方法
3.3.1. 支持Criteria Query
默认添加 deleted 判断,屏蔽查询
3.3.2. 支持动态方法
get, load, proxy, read 方法,默认添加 deleted 判断,屏蔽查询
3.3.3. 不支持HQL
目前不支持hql屏蔽
3.4. 查询标记删除的记录
使用hql查询
BaseUser.executeQuery("from BaseUser") BaseUser.executeQuery("from BaseUser where deleted=true") BaseUser.executeUpdate("delete from BaseUser where deleted=true")