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

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

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

相关推荐
2024-01-05
xxl-job restful api
谁若与集体脱离,谁的命运就要悲哀。——奥斯特洛夫斯基 昨天对接了xxl-job的restful api,发现其没有提供查询job信息的api,于是自己拓展 在原先com.xxl.job.admin.controller.JobApiController#api添加 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/** * api * * @param uri * @param data * @return */@RequestMapping("/{uri}")@ResponseBody@PermissionLimit(limit=false)public ReturnT<?> api(HttpServletRequest request, @PathVariable("uri") String uri, @RequestBody(required = fals...
2024-10-25
一个自带流程设计器的工作流引擎warmflow
你与别人花费一样的时间,因为别人用心,而你吊儿郎当,所以到了最后检验成果的时候,别人成功,而你除了赔了时间之后,一无所得。——飞行员舒克 一个自带流程设计器的工作流引擎终于迎来了这个激动人心的版本1.3.0,不需要在为引入设计器而烦恼了,按照以下前四点,可以快速接入业务系统,下面介绍如何使用设计器 1. 引入依赖<dependency> <groupId>io.github.minliuhua</groupId> <artifactId>warm-flow-plugin-ui-sb-web</artifactId> <version>1.3.0</version> </dependency> 2. 后端放行部分路径 1、这两个路径需要放行,否则无法访问,/warm-flow-ui/**, /warm-flow/** 2、以下是spring-security放行配置示例 @Bean protected SecurityFilterC...
2022-10-14
MP字段更新策略
看不见河底就不要涉水而过——佚名 之前写过mybatis-plus部分更新 今天分享一个注解式配置的 添加@TableField(updateStrategy = FieldStrategy.IGNORED) 即可在更新时,忽略判空,强制更新 例如: 123456789101112131415161718192021package com.ruben.simpleboot.pojo.po;import com.baomidou.mybatisplus.annotation.*;import com.ruben.simpleboot.pojo.common.BaseRecycleEntity;import lombok.Data;import lombok.EqualsAndHashCode;import java.time.LocalDateTime;/** * UserInfo * * @author VampireAchao * @since 2022/5/21 */@Datapublic class UserInfo{ private Long id; ...
2022-05-07
bean-searcher
等到看你银色满际,等到分不清季节更替,才敢说沉溺。——《水星记》 分享一个只读ORM框架bean-searcher 官方文档:https://bs.zhxu.cn/ 介绍: https://bs.zhxu.cn/guide/latest/introduction.html 例如以下代码: 1234567891011121314@RestController@RequestMapping("/user")public class UserController { @Autowired private MapSearcher mapSearcher; // 注入 BeanSearcher 的检索器 @GetMapping("/index") public SearchResult<Map<String, Object>> index(HttpServletRequest request) { // 一行代码,实现一个用户检索接口(Ma...
2023-12-09
spring-state-machine的action踩坑
善则称人,过则称己,则民不争。——佚名 今天在状态机的action里进行事件触发,发现并没有触发 这是因为在action触发后,state才会进行更改,而不是在state触发后。。。 例如此处我们在action的execute打断点: 可以看到还没有更改状态 如果需要在state触发以后紧接着触发event,则可以放到拦截器里spring-state-machine拦截器处理
2021-06-16
判断一个类是否另一个类的父类
任何教育都比不上灾难的教育。——英狄斯雷利 代码很简单 我们调用Class中isAssignableFrom函数来判断左边的类是否参数中这个类的超类(父类) 123456System.out.println(Collection.class.isAssignableFrom(List.class));System.out.println(Collection.class.isAssignableFrom(ArrayList.class));System.out.println(Collection.class.isAssignableFrom(Set.class));System.out.println(Collection.class.isAssignableFrom(HashSet.class));System.out.println(Collection.class.isAssignableFrom(Map.class));System.out.println(Collection.class.isAssignableFrom(HashMap.class)); 打印结...

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