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

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

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

相关推荐
2022-01-09
对null值友好的Collectors.groupingBy
一个人行走的范围,就是他的世界。——北岛 我们在使用Collectors.groupingBy时会遇到这种情况: 1Map<String, List<User>> map = Arrays.asList(new User(), null).stream().collect(Collectors.groupingBy(User::getName)); 为了避免这种情况,于是我自己实现了一个: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546@SafeVarargs@SuppressWarnings("unchecked")public static <T, K, D, A, M extends Map<K, D>> M listGroupBy(List<T> list, Function<T, K> sFunction, Collector<? super T,...
2021-07-20
接口能玩的小花招
一个人的礼貌是一面照出他的肖像的镜子。——歌德 首先写一个函数式接口 12345678910@FunctionalInterfacepublic interface Person { /** * 睡 * * @author <achao1441470436@gmail.com> * @since 2021/7/20 0020 23:20 */ void sleep();} 我们能通过调用其中的sleep方法执行函数(方法) 123 Person person = () -> System.out.println("睡"); person.sleep();// 执行结果:睡 而执行的函数则是我们接口本身,这个函数式接口就代表了一个函数 函数式接口 其实就可以理解为 函数、方法本身 但我们今天主要聊的不是这个 我们在函数中定义的变量默认就是常量 1234567891011121314@FunctionalInterfacepublic interf...
2022-05-03
StaticService
懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。——米尔•勒纳尔 今天又给MP提交了一个PR https://gitee.com/baomidou/mybatis-plus/pulls/223 是用于 在使用mybatis-plus进行开发中,我不禁产生一个疑问,为什么?每次使用我将会产生这些代码: 1234private UserInfoService userInfoService;private UserDepartmentService userDepartmentService;private UserPositionService userPositionService;private UserOrderService userOrderService; 我告诉自己,这是为了引用SpringBean,让其保持单例运行,但貌似这些Service,大多都是空实现,这是mybatis-plus开发者们共同的努力,让我能不用写这些CRUD的代码,但仍然每次需要去新建一个XXXService实现IService,然后再写一个实现类XXXServiceImpl继承Serv...
2023-05-03
为shenyu的PortUtils.findPort添加单元测试
爱好自由是人的天性,但往往过度而陷于放纵。斯宾诺莎 今天为shenyu的shenyu-client-core模块下添加了PortUtils.findPort的test case: https://github.com/apache/shenyu/pull/4604 对应的代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Ve...
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; ...
2025-08-16
spring-ai-alibaba
胡马依北风,越鸟巢南枝。一一《古诗十九首》 让 AI 赋能 Spring 应用——深度解读 Alibaba Spring AI Alibaba 项目在人工智能大模型风起云涌的时代,越来越多的企业和开发者希望将 AI 能力无缝集成到现有的业务系统中。Spring 作为 Java 生态中最流行的企业级开发框架之一,如何优雅地连接各种大模型服务,真正让“AI + 业务”成为现实?阿里巴巴开源的 spring-ai-alibaba 项目,正是为此而生! 本文将带你全面了解 spring-ai-alibaba 的定位、架构、特色、核心能力与应用前景,帮助你在 AI 时代快人一步,轻松打造智能业务应用。 一、项目简介:AI 能力与 Spring 生态的完美融合spring-ai-alibaba 是阿里巴巴开源的 Spring AI 扩展组件,旨在让开发者能够像用 Spring Boot 一样简单地集成和调用各类大模型服务,包含阿里云通义千问、阿里云大模型 API 以及阿里集团内部的大模型平台。项目不仅兼容官方 spring-ai 框架,还提供了更强的扩展性和阿里生态适配能力。 一句话理...

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