QuickJava-ORMQuickJava-ORM
首页
快速安装
关于我们
首页
快速安装
关于我们
  • 开始

    • 快速安装
    • 手动安装
    • 兼容性
    • 版本对应关系
  • 模型定义

    • 定义模型
    • 常见问题
  • 构造器/Wrapper

    • 查询
    • 关联查询
    • 增加
    • 修改
    • 删除
    • 逻辑删除
    • 常见问题
  • 其他
    • 关于我们
    • 性能基准
    • Gitee
    • Github

逻辑删除

定义

在实体字段上标注 @ModelLogic 注解即可启用逻辑删除(软删除):

@ModelName("shop_user")
public class User {

    @ModelLogic(value = "0", deleteVal = "2")
    private String delFlag;
}

注解参数

参数说明示例
value未删除时的值"0" / 空(表示 IS NULL)
deleteVal删除后设置的值"2"
deleteValFill删除时的填充策略ModelFieldFill.DATETIME
deleteValFillMethod自定义填充方法-

字段类型

  • 字符串类型:value="0", deleteVal="2"
  • 数值类型:value=0, deleteVal=1
  • 日期类型:deleteValFill=ModelFieldFill.DATETIME 自动填充删除时间
  • IS NULL 形式:不设置 value 值,表示 delete_flag IS NULL 为未删除

查询

默认行为

查询时自动追加条件过滤已删除记录:

WHERE del_flag = '0'

包含已删除

ModelWrapper.lambda(User.class)
    .includeSoftDelete()
    .select();

关联查询中包含已删除

new ModelWrapper<>(User.class)
    .leftJoin(UserThird.class, UserThird::getUserId, User::getId)
    .includeSoftDelete()
    .eq(User::getId, 1)
    .field(User::getId, User::getNickName)
    .pagination();

删除操作

逻辑删除(默认)

// 实体标注 @ModelLogic 时,delete() 自动转为 UPDATE
ModelWrapper.lambda(User.class)
    .eq(User::getId, 1)
    .delete();
-- 实际执行: UPDATE shop_user SET del_flag = '2' WHERE id = 1 AND del_flag = '0'

注意事项

  • 逻辑删除的记录在下次查询时默认不可见
  • 如需恢复已删除记录,可直接执行 UPDATE
Last Updated:
Contributors: qlopc-tbk@zocell.com
Prev
删除
Next
常见问题