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")