项目中遇到逻辑删除问题

author author     2023-05-02     369

关键词:

参考技术A 系统设置里比如用户、机构管理、字典管理等地方,这里的删除要求逻辑删除,但是这几张表t_user,t_organization,t_dic_type有唯一约束。比如要求机构名唯一,所以逻辑删除了原来数据后,该数据还存在表中,只是status的状态变了,这个时候如果要新增一条同样机构名的数据,会发现新增不进去,因为该表该字段唯一约束了。

这里的解决方法是新建一个org_name和status的唯一约束,当删除的记录的时候,将status的值改为一个唯一值,可以是雪花算法的id,这里因为表里status为int类型,int类型最大值是2147483647,所以雪花算法生成的值明显超过了,所以这里使用[ ”1”+时分秒毫秒 ]作为status的值。

项目中,application.yml中逻辑删除的配置

LogicSqlInjector类中有个方法sqlLogicSet如下:

在启动项目的过程中,会读取表的所有字段,当读取到status字段时,fieldInfo.getLogicDeleteValue()计算的值从application.yml中读取到,即101003。所以只要继承LogicSqlInjector类并重写sqlLogicSet方法,自定义status的值。

如果映射对象相应的字段上@TableLogic注解里没有默认值的话,默认会从application.yml中取101003的值。所以当没有默认值时,重写该方法会对所有表的status都生效,但是有些表的status的值仍然必须为101003,所以有些特别的表需要订制个性规则。比如t_organization表的映射对象Organization,需要在status属性上的@TableLogic注解里设置一个默认值。这里设置为”random”

注意表中set.append(“”); 这里赋的值应该使用sql语言里的语句,如date_format(),random(),这样该值就是动态的。而如果使用DateUtil.getMMTime()则不变。

Organization表中

当设置为random时,再次启动服务的时候,会进到LogicSqlInjector类的sqlLogicSet方法中,在这里作个性化需求。

为什么没有set.append(DateUtil.getMMTime());使用该方法获取的值作为传入status的值呢?因为只启动一次,所以实际操作中,相当于将这个值传入sql中。但是如果使用set.append("date_format(now(),'%k%i%s%f')/1000"),因为是sql的语法,所以值是变化的。

如何删除数组中的项目? [复制]

】如何删除数组中的项目?[复制]【英文标题】:HowtoremoveiteminArray?[duplicate]【发布时间】:2016-07-2009:35:20【问题描述】:我正在使用Swift进行编码,但遇到了一个问题。我在数组枚举期间尝试从数组中删除一项时遇到索引超出范... 查看详情

从会话中删除项目

】从会话中删除项目【英文标题】:Removingitemsfromasession【发布时间】:2011-04-0211:45:44【问题描述】:我在删除购物车项目的会话数组中的项目时遇到问题。以下代码应获取所选项目并将其从会话中删除。然而,最终结果与之前... 查看详情

从 Flutter 的列表中删除项目

】从Flutter的列表中删除项目【英文标题】:RemovingitemsfromalistonFlutter【发布时间】:2019-12-1613:59:25【问题描述】:我在从列表中删除项目时遇到问题。我想删除点击的项目,但是当我输入删除命令时出现错误:“I/flutter(9410):另一... 查看详情

android - 长按从 ListView 中删除项目

】android-长按从ListView中删除项目【英文标题】:android-removingitemfromListViewonlongclick【发布时间】:2012-12-2917:16:01【问题描述】:我在尝试通过长按从列表视图中删除项目时遇到了一些问题。下面是代码:publicclassMListViewActivityextend... 查看详情

项目中遇到并发问题和解决办法

...模块就要采取一些缓存技术和排它锁的用户,比如:由于项目需求是可以多个人同时砍价,我们又有砍到最低价格的限制,所以不进行处理的话很有可能就会超出我们所限制的价格!所以当用户砍价砍到最低价的时候就需要用到... 查看详情

Restkit 从核心数据中删除项目

】Restkit从核心数据中删除项目【英文标题】:Restkitremovingitemsfromcoredata【发布时间】:2013-06-1517:06:33【问题描述】:我似乎在使用RestKit从CoreData中删除项目时遇到问题。我通过restkit调用了一些基于lat和lng的MovingObjects。它们存储... 查看详情

我想从列表视图中删除一个项目

】我想从列表视图中删除一个项目【英文标题】:Iwanttodeleteanitemfromalistview【发布时间】:2017-03-1509:38:57【问题描述】:我遇到的问题是,每当我delete时,只会删除ListView中的最后一项。我从我的数组列表中删除该项目并调用adapt... 查看详情

qml-开发中遇到的错误收集

...会导致的问题,写下解决过程方便以后查看。1.因为删除项目中的文件而导致的无法运行第一次删除项目中一个qml文件,然后重新构建后无法启动程序。然后一个群里的前辈恨铁不成钢的给我指导了一番。直接删除构建文件夹中... 查看详情

从数组javascript中删除项目时重新呈现列表的问题

】从数组javascript中删除项目时重新呈现列表的问题【英文标题】:Issueonre-renderlistwhenremovinganitemfromanarrayjavascript【发布时间】:2021-11-1808:34:13【问题描述】:我正在尝试为用户可以删除和编辑的文本创建一个列表。但是我在尝试... 查看详情

如何从 Xamarin Forms ListView 中删除项目?

】如何从XamarinFormsListView中删除项目?【英文标题】:HowtoremoveanitemfromaXamarinFormsListView?【发布时间】:2021-10-2700:18:39【问题描述】:我正在尝试从ListView中删除项目/行,但困难在于我还需要传递一些委托或触发一些事件或其他东... 查看详情

Python在删除字典中的项目后回收内存

】Python在删除字典中的项目后回收内存【英文标题】:Pythonreclaimingmemoryafterdeletingitemsinadictionary【发布时间】:2011-04-2512:59:10【问题描述】:我在Python中有一个相对较大的字典,并且希望不仅能够从中删除项目,而且实际上reclaim... 查看详情

在 Xcode 的 CheckOut 窗口中删除最近的项目

】在Xcode的CheckOut窗口中删除最近的项目【英文标题】:RemoverecentitemsintheXcode\'sCheckOutwindow【发布时间】:2015-12-1421:22:40【问题描述】:有没有办法在Xcode7上的结帐对话框(“源代码管理”->“签出...”)中清除最近的项目?【... 查看详情

在 JavaScript 中从数组中删除一个项目

】在JavaScript中从数组中删除一个项目【英文标题】:DeleteanitemfromanarrayinJavaScript【发布时间】:2021-10-2219:04:23【问题描述】:我正在创建功能,用户可以在其中上传任意数量的文件。我还为用户提供删除功能,以防他们可能需要... 查看详情

在 onDelete 函数中获取已删除项目的值

】在onDelete函数中获取已删除项目的值【英文标题】:GetvalueofdeletediteminonDeletefunction【发布时间】:2020-10-1920:03:00【问题描述】:我遇到了问题。我需要使用.onDelete函数删除的项目的值。我是swift新手,我不知道该怎么做。如果... 查看详情

从 Angular 中的 FormArray 中删除所有项目

】从Angular中的FormArray中删除所有项目【英文标题】:RemoveallitemsfromaFormArrayinAngular【发布时间】:2017-06-1016:02:21【问题描述】:我在FormBuilder中有一个表单数组,我正在动态更改表单,即点击从应用程序1加载数据等。我遇到的问... 查看详情

flutter项目遇到的问题及解决方法记录

参考技术A问题原因:版本大小原因解决方案:点击ios文件夹->点击podfile修改如下(亲测实用已解决)解决方案:删除IOS工程中的Podfile.lock文件,重新podinstall(继续执行Flutterrun操作)即可解决。问题原因:没有配置safety相关解决方案:可... 查看详情

无法使用 Mongoose 从数据库中删除项目

】无法使用Mongoose从数据库中删除项目【英文标题】:UnabletodeleteanitemfromthedatabaseusingMongoose【发布时间】:2021-05-1504:34:15【问题描述】:我试图在博客网站中添加此删除功能,这样当用户单击删除按钮时,它会从数据库中删除该... 查看详情

android开发错误——androidstudio中遇到过的错误问题与解决方案汇总(代码片段)

...如下的语句 (3)编译时发生 解决方法:1、你的项目中存在中文命名,将项目中对应的中文命名改为英文即可 (4)编译时发生 解决方法:1、你的项目中resdrawable下存在大写字母,将项目中 查看详情