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

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

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

相关推荐
2023-04-01
动态mapper日志问题
为学勿忘家世俭,唯金能使子孙愚。——刘克庄 今天发现stream-query的动态mapper,独立配置不生效: 原来是因为logback解析日志对应的类和包时,忽略了内部类的判断 在执行时发现用的Logger对象是MappedStatement里面的,于是就从MappedStatement的创建 找到C:/Users/achao/.m2/repository/org/mybatis/mybatis/3.5.10/mybatis-3.5.10-sources.jar!/org/apache/ibatis/mapping/MappedStatement.java:81里面的 LogFactory.getLog(logId)(logId)此时是我们的动态Mapper 然后找到C:/Users/achao/.m2/repository/ch/qos/logback/logback-classic/1.2.4/logback-classic-1.2.4.jar!/ch/qos/logback/classic/LoggerContext.class:84下面有一段获取分隔符下标然后...
2023-11-17
对接声网rtc-restful-api
没有求知欲的学生,就像没有翅膀的鸟。——萨迪 代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131package com.example.agora.api.webclient;import com.alibaba.nacos.common.utils.JacksonUtils;import com.fasterxml.jackson.core.type.TypeReference;import com.example.agora.api.constant...
2024-03-16
mybatis的@MappedTypes
“Given enough eyeballs, all bugs are shallow.” — Linus’s Law, Eric S. Raymond 看到com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler的源码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778/* * Copyright (c) 2011-2023, baomidou (jobob@qq.com). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * ...
2021-12-09
Collectors.mapping
胜人者有力,自胜者强。——先秦《老子》 今天发现了Collectors.mapping的正确姿势 使用场景如下: 我想要对一个List<User>进行groupBy 1234567891011121314151617181920212223242526272829class User { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Inte...
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....
2023-10-09
nextrtc-videochat-with-rest
个人利益永远包括在公共利益之中,要想和公共利益分离,等于自取灭亡。——孟德斯鸠 介绍一个java的webrtc实现,虽然项目很老了,但也具备一定的参考价值 https://github.com/mslosarz/nextrtc-videochat-with-rest 这里用到的技术包括spring security, spring rest, spring jpa等

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