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

删除时效果:

相关推荐
2023-12-13
boot项目添加运行参数的maven插件
不存在十全十美的文章,如同不存在彻头彻尾的绝望。——村上春树 之前说了 单元测试添加运行参数的maven插件 难道对于非单元测试就只能手动写命令了吗?当然不是!我们只需要使用: 123456789101112131415161718192021222324252627282930313233<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <config...
2022-10-27
Fastjson姿势技巧集合
一个人在年轻的时候,没有什么能把他搞垮——奥尼尔 分享一个Fastjson姿势技巧集合: https://github.com/safe6Sec/Fastjson FastjsonFastjson姿势技巧集合 说明 本项目涉及的一些姿势和payload是从之前的随手记的笔记直接粘进来的,很多找不到出处了所以来源未贴出来,望师傅们见谅。 高版本的很多细节还有待更新。 浅蓝Kcon议题内容由@su18师傅整理 各版本复现payload来自@kezibei师傅,我原项目基础上加了maven依赖,做了一点代码修改。 各版本payload复现https://github.com/safe6Sec/ShiroAndFastJson 判断是否用了fastjson鉴别fastjsonDNSLOG 1{"@type":"java.net.InetSocketAddress"{"address":,"val":"dnslog.com"}} 1...
2022-06-07
类型描述符
我知道你愚蠢轻佻、头脑空虚,然而我爱你;我知道你的企图你的理想,你的势力,你的庸俗,然而我爱你;我知道你是个二流货色,然而我爱你。——毛姆 见: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.2.1 在java中,由于历史原因,出现在类文件结构中的二进制名称语法与我们常用的类名不同,通常使用(正斜杠)/替换了原本的包名间隔(句号). 例如Thread的类名叫java.lang.Thread,但是在class文件格式的描述符中使用的内部格式,对Thread类名称utf8的引用却是:java/lang/Thread 不信我们随便打开一个class文件 可以看到类似的描述符 那如何获取类的描述符呢?它的规则又是如何呢? 首先,基本类型描述符,都是以ASCII字符表示,例如L 正斜杠类名;表示对象类型,[表示数组类型 我们可以在sun.invoke.util.Wra...
2024-03-27
stream-query开源合规
不好的书也像不好的朋友一样,可能把你戕害。——菲尔丁 首先是检查header的github action的ci 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, Version 2.0 (the# "License"); you may not use this file except in compliance# with...
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下面有一段获取分隔符下标然后...
2020-12-11
jackson处理json
君子成人之美,不成人之恶。小人反是。——《论语》 转载,原文 介绍Jackson 的核心模块由三部分组成 jackson-core,核心包,提供基于”流模式”解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。 jackson-annotations,注解包,提供标准注解功能。 jackson-databind ,数据绑定包, 提供基于”对象绑定” 解析的相关 API ( ObjectMapper ) 和”树模型” 解析的相关 API (JsonNode);基于”对象绑定” 解析的 API 和”树模型”解析的 API 依赖基于”流模式”解析的 API。 用法引入依赖 123456<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databin...

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