逻辑删除与联合索引冲突处理(二)
发表于|更新于
|浏览量:
一星陨落,黯淡不了星空灿烂;一花凋零,荒芜不了整个春天。——巴尔扎克
之前写过一篇,用时间实现,今天提供另一种思路
我们的逻辑删除字段,如果和联合唯一索引同时使用,还可以使用下面这一种方式:
如果未删除,使用魔法值
如果已删除,使用NULL
因为mybatisPlus官方文档也提到了:
字段类型支持说明:
- 支持所有数据类型(推荐使用
Integer,Boolean,LocalDateTime)- 如果数据库字段使用
datetime,逻辑未删除值和已删除值支持配置为字符串null,另一个值支持配置为函数来获取值如now()
之前看源码,发现它也是使用替换字符串的方式去做,所以是支持NULL的
并且我们的null并不受唯一索引约束
那我们这里就可以直接使用如下配置:
1 | @TableLogic(delval = StringPool.NULL, value = "existed") |
效果:

删除时效果:

相关推荐
2023-01-06
升级mp新版本后,service里removeByIds主键类型不一致报错
先谋后事者逸,先事后图者失。——陈子昂 场景: 主键类型是Integer,使用service中removeByIds,传入List<String>报错 MP用的mybatis的反射,只需要在表信息初始化后,获取反射的缓存map,往里面放入我们自定义的转换操作即可 代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;import com.baomidou.mybatisplus.core.metadata.TableInfo;import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;import io.github.vampireachao.stream.core.reflect.ReflectHelper;import io.github....
2022-06-04
quartz连接池问题
心脏是一座有两间卧室的房子,一间住着痛苦,另一间住着欢乐,人不能笑得太响。否则笑声会吵醒隔壁房间的痛苦。——卡夫卡 之前写了篇quartz博客:https://VampireAchao.github.io/2021/01/24/quartz/ 这两天通过druid监控发现一些连接一直没有释放,以为是出现了链接池泄露 最后排查发现,quartz没有使用druid的连接池,因此导致连接池经常满 把这段配置注掉即可
2024-05-13
添加OceanBase-MybatisPlus案例
多思不若养志,多言不若守静,多才不若蓄德。——曾国藩 我在 ob-samples 添加的 demo 合并了 https://github.com/oceanbase/ob-samples/pull/37 通过 mybatisplus-java 启动和测试 OceanBase Docker容器,更多详细信息可以参见 https://github.com/baomidou/mybatis-plus以及 https://java.testcontainers.org/modules/databases/oceanbase 。 快速开始将 OceanBase 驱动、TestContainers OceanBase、MybatisPlusStarter、SpringBootStarter Test 模块添加到 POM。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546<dependencies> <dependency> <grou...
2023-08-02
对接deepl翻译
富而不清白,不如贫而有名誉——弥尔顿 api文档如下,需要注意的是必须要绑定支付方式才能显示authKey: https://www.deepl.com/docs-api 代码如下: 12345678910111213141516171819202122232425262728293031import com.dtflys.forest.Forest;import lombok.val;import org.dromara.hutool.core.text.StrUtil;import org.dromara.streamquery.stream.core.collection.Lists;import org.dromara.streamquery.stream.core.stream.Steam;import java.util.List;import java.util.Objects;public class DeeplUtil { private static final DeeplProperties properties = SpringCont...
2023-01-12
jackson反序列化器获取类型
不要用陌生人的目光来看你所爱的人,也不要认为自己做出了牺牲——贝·列昂尼多娃 例如这里使用hutool的EnumUtil.getEnumAt传入枚举的ordinal,以及枚举类型,获取到具体的枚举常量值 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106import cn.hutool.core.util.EnumUtil;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.*;import com.fasterxml.jackson.databind.deser.ContextualDeserial...
2024-09-07
springboot单向推送给客户端SseEmitter
教育人就是要培养他对自己有更严格的要求。——苏霍姆林斯基 SseEmitter 是 Spring Framework 提供的一个类,用于处理服务器向客户端推送事件(Server-Sent Events, SSE)的功能。与 WebSocket 不同,SSE 是单向的,服务器可以推送数据到客户端,但客户端不能推送数据到服务器。SSE 适用于场景包括实时消息通知、进度更新、数据流推送等。Spring Boot 中通过 SseEmitter 实现 SSE 通信简单且高效。 Spring Boot 中的 SseEmitter 提供了一种轻量级的方式来向前端推送实时数据,它通过标准的 HTTP 协议工作,兼容性广泛且易于使用。 SseEmitter 的主要特点: 轻量级:基于 HTTP 协议,兼容性好,不需要复杂的配置。 单向推送:服务器向客户端推送数据,适合需要实时更新的场景。 长连接:通过持续连接,避免频繁的轮询操作。 官方文档、GitHub地址 官方文档:Spring SseEmitter Documentation GitHub 仓库:Spring Framework...

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