逻辑删除与联合索引冲突处理
发表于|更新于
|浏览量:
早知今日读书是,悔作从前任侠非。——李欣
今天发现联合唯一索引和逻辑删除冲突了,导致我这边已删除的数据还具有唯一索引的约束
本来一开始是考虑要不要在删除前手动将数据清空一下,但这样感觉并不优雅
然后今天跟朋友探讨了下,决定使用datetime作为逻辑删除字段的类型,如果未删除,则字段为魔法值的固定时间,已删除,则设为删除时的时间
使用Mybatis-plus能够优雅实现:
将逻辑删除字段如下配置即可
1 | /** |
如果不是用注解,也可以配置全局,全局配置的方法我之前写过一篇博客,只要把对应的删除值修改一下即可
然后对应的数据库联合唯一索引,将其关联上
最后效果也是很棒:

可以看到查询自动带上了设置的日期
而我们进行删除时也成功设为NOW()

这里对应的代码实现com.baomidou.mybatisplus.core.metadata.TableInfo#formatLogicDeleteSql

相关推荐
2020-08-02
jenkins构建邮件通知
开启邮箱的SMTP服务,复制授权码 下载插件 然后点击Jenkins的设置,注意密码是填我们上面复制的授权码 e44f883aaca356d9 然后在我们的项目目录下编写email模板 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169...
2021-08-04
日志输出filter
人类经常把一个生涯发生的事,撰写成历史,在从那里看人生;其实,那不过是衣服,人生是内在的——罗曼。罗兰 日记记录过滤器 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677package com.kuang.config.log;import com.alibaba.fastjson.JSON;import com.kuang.common.util.Opt;import com.kuang.common.util.ResponseWrapper;import lombok.extern.slf4j.Slf4j;import org.slf4j.Logger;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http...
2021-10-05
Sa-Token
我相信过,如果怀着愉快的心情谈起悲伤的事情,悲伤就会烟消云散。——高尔基 介绍一个轻量级JWT权限认证框架Sa-Token 官方文档:https://sa-token.dev33.cn/doc/index.html#/ 今天直接试着用了下,感觉还不错,功能比之前的shaun强大 真香~
2022-03-27
我在jdk8实现了jdk18的新特性
在自己身上,克服这个时代。——尼采 首先放jdk18的官方特性介绍地址:https://openjdk.java.net/jeps/420 我就不再过多解释了,直接贴代码吧~ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117...
2021-10-09
Sa-Token中SerializationException
有两件事我最憎恶:没有信仰的博才多学和充满信仰的愚昧无知。——爱默生 今天把Sa-Token中的用户状态进行持久层扩展 使用了jdk默认序列化方式后报错,清除缓存后又换成了jackson序列化方式 结果还是报错SerializationException,提示我LocalDateTime没有默认构造器 既然我项目中mvc使用的fastJson配置过LocalDateTime的转换,那我就继续用fastJson进行拓展吧: 首先是配置FastJson 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657package com.ruben.xchat.config;import com.alibaba.fastjson.parser.ParserConfig;import com.alibaba.fastjson.serializer.SerializeConfig;import com.alibaba.fastjson.s...
2020-12-01
debugのChrome篇
我来到这个世界为的是看太阳和蔚蓝色的田野。——巴尔蒙特 chrome中如何debug?我们可以打开chrome的控制台 找到我们的文件 然后在想要调试的地方打断点 然后执行到此处的时候就会触发调试 我们可以点击右侧的Step into next function call来执行下一步函数调用 可以点击Resume script execution放行到下个断点 然后Step over next function call则可以执行步过,执行到当前函数结尾 Step out of current function步出,则可以跳出我们当前执行的函数 Step和我们第一个Step into next function call差不多,都是执行下一步 Activate breakpoints则是禁用断点 最后一个Pause on exceptions则是在所有异常发生时暂停程序,开始调试 我们也可以直接在代码里右键,点击执行到当前代码 Call Stack区域可以查看我们当前函数以及它的调用者 甚至 调用者的调用者… 下方的Scope区域可以观测我们的参数,...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog