218 Star 2.4K Fork 472

MyBatis-Flex / MyBatis-Flex

 / 详情

[功能建议]: 逻辑删除除了是否删除外,可以考虑自定义扩展删除人、删除时间等相关信息

已完成
创建于  
2023-08-16 23:23

您的功能建议是否和某个问题相关:

关于逻辑删除的功能。

您希望看到什么解决方案:

逻辑删除除了修改是否删除字段外,希望能扩展删除人、删除时间等信息。
希望能自定义逻辑删除处理器,并自己设置一些需要同时需要更新的字段。
也可以效仿onInsert和onUpdate,增加一个onDelete来补充需要修改的字段。

您考虑过哪些替代方案:

现在通过在设置删除字段值的sql语句上增加了其它字段,但这并不是好的方案:
@Override
    public String buildLogicDeletedSet(String logicColumn, TableInfo tableInfo, IDialect dialect) {
        //扩展一下软删除的sql语句,增加删除时间和删除人。
        String sql = dialect.wrap(logicColumn) + EQUALS + prepareValue(getLogicDeletedValue());
        if(Arrays.stream(tableInfo.getAllColumns()).anyMatch(x->x.toLowerCase().equals("deleteTime".toLowerCase()))){
            sql+=",deleteTime=now(),deleteUserId="+ SpringContextUtil.getBean(AppSession.class).getUserIdOrDefault();
        }
        return sql;
    }

评论 (3)

虚若影 创建了任务
虚若影 添加了
 
enhancement
标签
虚若影 修改了描述
虚若影 修改了标题
Michael Yang 里程碑设置为v1.5.9
展开全部操作日志

目前可以使用临时的方案是先进行 update 然后再 delete,这两者在同一个事务里进行。

@Override
public String buildLogicDeletedSet(String logicColumn, TableInfo tableInfo, IDialect dialect) {
        //扩展一下软删除的sql语句,增加删除时间和删除人。
        String sql = dialect.wrap(logicColumn) + EQUALS + prepareValue(getLogicDeletedValue());
        sql += "," + dialect.wrap('deleteTime') + EQUALS + "now()";
        sql += "," + dialect.wrap('deleteUserId') + EQUALS + SpringConextUtil.getUserId();
}

就是挺好的方案。

Michael Yang 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
61279 fuhai 1716893681
1
https://gitee.com/mybatis-flex/mybatis-flex.git
git@gitee.com:mybatis-flex/mybatis-flex.git
mybatis-flex
mybatis-flex
MyBatis-Flex

搜索帮助