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

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

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

相关推荐
2021-03-08
nacos服务注册与发现
人生就象弈棋, 一步失误, 全盘皆输,这是令人悲哀之事;而且人生还不如弈棋,不可能再来一局,也不能悔棋。—— 弗洛伊德 下载 找到zip下载解压即可 进入bin目录 12# 单机启动startup.cmd -m standalone 然后我们可以引入java的SDK 使用maven的GAV 12345678910111213141516171819202122232425262728293031<dependencies> <!-- alibaba cloud --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.5.RELEASE</version> <typ...
2025-10-07
kestra
十年饮冰,难凉热血。——梁启超 https://github.com/kestra-io/kestra Kestra:从脚本到AI,统一编排一切的现代化“工作流即代码”平台在数据驱动、自动化、AI普及的时代,如何高效管理和编排脚本、数据处理、基础设施、AI任务甚至业务流程?如果你需要的不只是一个简单的调度器,而是一个真正“代码即编排、编排即代码”的平台,Kestra 绝对值得你深入了解。 一、项目简介 项目地址:kestra-io/kestra 官网:https://kestra.io 一句话描述:Orchestrate everything - from scripts to data, infra, AI, and business - as code, with UI and AI Copilot. Simple. Fast. Scalable. 主语言:Java Star:22,282+ Fork:2,012+ License:Apache 2.0 标签:workflow pipeline-as-code data-orchestration automa...
2024-09-01
Apache-ShenYu支持namespace功能(三)
若我会见到你,事隔经年。我如何和你招呼,以眼泪,以沉默。——《春逝》 PR链接: [Improve] Rule and MetaData module adaptation namespace by VampireAchao · Pull Request #478 · apache/shenyu-dashboard · GitHub 本次主要是支持了Rule和MetaData部分的namespace功能 这里要注意的是别忘记切换namespace后,在componentDidUpdate中要进行判断 12345678componentDidUpdate(prevProps) { const { currentNamespaceId } = this.props; // 如果当前namespace变更 if (prevProps.currentNamespaceId !== currentNamespaceId) { // 重新按照当前`namespaceId`查询列表 this.query(); }...
2021-01-21
父类坑
我要让全世界都记住我的温柔。——曼德拉 今天在项目中遇到一个小坑可把我吓坏了,记录一下,以免再犯 首先还原下场景吧,我们写个类 123456789101112131415161718192021222324252627package com.ruben.pojo;import lombok.Data;/** * @ClassName: BaseEntity * @Description: 我还没有写描述 * @Date: 2021/1/21 0021 21:01 * * * @author: <achao1441470436@gmail.com> * @version: 1.0 * @since: JDK 1.8 */@Datapublic class BaseEntity { protected Integer id; public BaseEntity() { } public BaseEntity(Integer id) { this(); this.id = id;...
2022-07-13
泛型限定问题
双木非林,田下有心。——顾城 首先看这段代码: 12345678910111213141516171819202122import java.util.function.Function;class Scratch { static class RoleInfo { } public static void main(String[] args) { // 想让这两个通过 test(Object::hashCode, RoleInfo::hashCode, new RoleInfo()); test(Object::toString, RoleInfo::toString, new RoleInfo()); // 想让这个报错 test(Object::hashCode, RoleInfo::toString, new RoleInfo()); } public static <T, A, R> void te...
2023-02-21
lombok的val
满足是发明创造的窒息物——佚名 kt中的val让我用的爱不释手,不用重复定义一个又一个类型,编译器会自动推导 今天遇到一个情况,我们知道把java代码粘贴到kt文件里,idea会自动转换java为kt 但反过来将kt代码粘贴到java文件里则不会,原来的val,现在还是val 这时候可以使用lombok的val:https://projectlombok.org/features/val 例如下面的代码会被编译为合适的类型: 12345678910111213141516171819202122import java.util.ArrayList;import java.util.HashMap;import lombok.val;public class ValExample { public String example() { val example = new ArrayList<String>(); example.add("Hello, World!"); val foo = example...

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