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

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

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

相关推荐
2022-05-29
stream-query
“春非我春,夏非我夏,秋非我秋,冬非我冬。”——汉乐府《日出入》 弄了好几天,终于成功上传到maven中央仓库了 使用方式: 12345678910<dependency> <groupId>io.github.vampireachao</groupId> <artifactId>stream-plugin-mybatis-plus</artifactId> <version>1.0.5</version></dependency><dependency> <groupId>io.github.vampireachao</groupId> <artifactId>stream-core</artifactId> <version>1.0.5</version></dependency> 引入这两个依赖,然后就可以使用啦 测试用例 12345678...
2021-08-09
mvc配置fastjson序列化枚举
怯懦囚禁人的灵魂,希望可以令你感受到自由,强者自救,圣者渡人。——《肖申克的救赎》 我们可以使用SerializerFeature.WriteEnumUsingToString去完成枚举的序列化操作: 例如我这里某对象属性为枚举类型 我们当使用该POJO接收参数时,我们如果手动转换的话比较麻烦 我们配置如下的后就可以直接传入枚举常量的名字进行映射 例如我此处 最后传入type=INDEX_SHUFFLE,成功完成映射 完整代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475package com.ruben.zsxh.config;import com.alibaba.fastjson.serializer.SerializeConfig;import com.alibaba.fastjson.serializer.Serializer...
2022-06-24
opencc4j
“不用给我爱,不用给我钱,不用给我声誉,给我真理吧。我们应该有勇气去面对真实的内心,即使前面荆棘满地,也要坚定地走下去。为了不浪费你的这一辈子。”——梭罗《瓦尔登湖》 分享一个java简繁转换的库opencc4j https://github.com/houbb/opencc4j Group ArtifactId Version 12345<dependency> <groupId>com.github.houbb</groupId> <artifactId>opencc4j</artifactId> <version>1.7.2</version></dependency> 使用起来: 繁简体转换转为简体123String original = "生命不息,奮鬥不止";String result = ZhConverterUtil.toSimple(original);Assert.assertEquals("生命不息,奋斗不止...
2023-04-03
stream-query加入dromara开源组织
宁可理解少些,胜于误解许多。——法郎士 Stream-Query简介 Stream-Query允许完全摆脱Mapper的Mybatis-Plus体验!可以使用类似“工具类”这样的静态函数进行数据库操作 Stream-Query诞生背景自从用了Mybatis-Plus后,谓爱不释手,捧读其源码,贡献其代码…慢慢地,我不仅是Hutool的Commiter,也成为了Mybatis-Plus的Commiter 于是我产生了一个思考,能不能让Hutool的静态工具类概念,用在Mybatis-Plus中呢? 这样我就可以不需要每张表都使用代码生成器去生成继承了ServiceImpl的Service 而是针对某一域的业务去新建Service,避免很多可以省略掉的Service类(比如除了主键外只包含user_id、role_id这两个字段的关联表) 然后我就编写了Db类,放到了Mybatis-Plus的3.5.3版本中: 但我还不满足,此时我仍然需要编写一个UserRoleMapper,用于Mybatis-Plus去动态代理 那么我就又研究了下源码,发现了一种实现动态Mapper的方法,那...
2023-03-03
flowlong
真正的科学家应该是个幻想家,谁不是幻想家,谁就只能把自己称为实践家——巴尔扎克 分享一个工作流框架:https://gitee.com/aizuda/flowlong FlowLong 飞龙 工作流 特别说明 flowlong 是基于 snakerflow 重构的 更适合中国人的国产工作流引擎 。 名字由来 snakerflow 蛇 (重构进化) flowlong 龙 中文名 飞龙 在天美好愿景!
2023-11-04
spring-state-machine守卫
是非之声,无翼而飞;损益之名,无胫而走。——白居易 文档: https://docs.spring.io/spring-statemachine/docs/current/reference/#configuring-guards 说白了守卫是用来判断事件执行后能否更新到下一个状态的 这里按之前提到的代码示例来示范 首先是配置为返回true,发现下面一路正常打印 然后是return false 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485package com.ruben.parent;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configura...

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