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

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

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

相关推荐
2021-01-05
Optional再扩展
他们之所以做得到,就因为他们认为他们能够做到。—— 维吉尔 关于Optional的介绍,之前的博客已经说过了,这里就不再赘述 这里写点常用的例子 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970package com.ruben;import java.util.*;import java.util.concurrent.atomic.AtomicBoolean;import java.util.function.Supplier;import java.util.stream.Stream;/** * @ClassName: OptionalDemo * @Description: 我还没有写描述 * @Date: 2021/1/5 0005 20:47 * * * @author: <achao1441470436@gmail.com> * @ver...
2023-10-01
webclient远程调用
无论谁想获得自己的名声,都应该隐藏起他的自负。——斯威夫特 我们在webflux场景下可以使用webclient 依赖就包含在了webflux中 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId></dependency> 这里使用的话: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768import cn.dev33.satoken.same.SaSameUtil;import cn.hutool.core.map.MapUtil;import cn.hutool.json.JSONUtil;import com.alibaba...
2022-09-02
h2下update set字段重复处理拦截器
慷慨是友谊的精华——王尔德 今天发现Mybatis-Plus在h2下,同时使用UpdateWrapper和entity会出现 update 表名 set 字段1=xxx,字段1=xxx 这样的sql,在mysql下是正确的语法,h2会抛出异常 所以写了个mybatis拦截器,放在了streampark里: pr地址:https://github.com/streamxhub/streampark/pull/1493 源码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128/* * ...
2021-02-17
springboot配置yml提示
文变染乎世情,兴废系乎时序。——刘勰 按照springboot官方文档 首先我们添加依赖 12345<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency> 并在maven-plugin中排除依赖,因为我们maven进行编译、打包等并不需要它 123456789101112131415161718<project> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...
2024-02-15
mapstruct模板
自信是成功的秘诀。——韦恩·戴克 分享一个idea的mapstruct模板 12345678910111213141516171819#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end#parse("File Header.java")import jakarta.annotation.Nullable;import org.mapstruct.Mapper;import org.springframework.core.convert.converter.Converter;/** * ${NAME}Converter * * @author achao@apache.org * @since $DATE */@Mapper(componentModel = "spring")public interface ${...
2021-11-24
aizuda
自觉心是进步之母,自贱心是堕落之源,故自觉心不可无,自贱心不可有。——邹韬奋 最近参与的开源项目: 爱组搭 这个开源项目刚起步,我是很看好它的 目前有三个模块,一个限流、一个安全模块、以及一个机器人模块 限流模块就不用多说了,安全模块也就是用来加密,机器人模块,就是把你的异常捕获,并推送到 企业微信 飞书 钉钉 等平台 示例项目 建议fork下来示例项目跑一跑玩一玩 官方介绍: aizuda-components 爱组搭 ~ 低代码组件化开发平台之组件库 愿景:每个人都是架构师 爱组搭 ~ 组件源码示例演示 公共模块 aizuda-common 主要内容 工具类 等。 限流模块 aizuda-limiter 主要内容 api 限流,短信,邮件 发送限流、控制恶意利用验证码功能 等。 12345><dependency> <groupId>com.aizuda</groupId> <artifactId>aizuda-limiter</artifactId> <version>1.0.0&l...

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