新增修改数据时校验字段唯一性

更新时间:2023-05-18 19:55:33 阅读: 评论:0

新增修改数据时校验字段唯⼀性
与爱国有关的名言新增/修改数据时校验字段唯⼀性
金针白莲
假定有实体类 RuleAssign.java,对应如下表:
id type rule
1a1001
2b1002
3c1003
⼀、单字段校验
前端传过来⼀批数据List<ruleAssign> datas,需要对rule字段校验唯⼀性。这批数据既有新增数据,也有修改数据。
第⼀步,判断datas⾃⾝是否有重复rule字段。
Set<RuleAssign> t = new TreeSet<>(paring(RuleAssign::getRule));
t.addAll(datas);
if (t.size() < datas.size()){
throw new Exception("rule在list中不唯⼀");
炖小鱼的家常做法}
这⾥⽤到了TreeSet有序集合,通过Comparator定义⽐较字段,将datas去重,如果去重后的集合⽐原集合size⼩,则说明有重复数据,即有重复rule字段。
然后通过判断id将数据分为 新增 和 修改 两批。
List<ruleAssign> inrt = datas.stream().filter(data -> Id == null).List());
List<ruleAssign> update = datas.stream().filter(data -> Id != null).List());
第⼆步,处理新增数据,判断inrt中的rule在数据库中是否有重复值。将rule字段提取成⼀个List,然后使⽤sql查询where in语法判断即可。
List<String> rules = inrt.stream().map(RuleAssign::getRule).List());
人才盘点分析报告第三步,处理修改数据,判断update中的rule在数据库中是否有重复,对于每条数据有两种情况。A:该条数据未修改rule字段,此时不需要判断rule唯⼀性,忽略该条数据。B:该条数据修改了rule字段,此时需要判断唯⼀性。下⾯我们进⾏两次TreeSet去重即可验证重复。
1. 将数据库中所有数据查出来List<ruleAssign> origin,然后将update添加进去,此时origin中有原数据和修改后的数据。
origin.addAll(update);
2. 将 A 情况的数据过滤掉,id和rule相同的数据即是未修改rule字段的数据。
Set<RuleAssign> t = new TreeSet<>(paring(RuleAssign::getRule)
.thenComparing(RuleAssign::getId));
3. 此时的origin中有原数据和修改过rule字段的数据,再按照第⼀步的⽅法校验origin中rule的唯⼀性即可完成校验。
Set<RuleAssign> t = new TreeSet<>(paring(RuleAssign::getRule));
t.addAll(datas);冬天脚冰凉是什么原因引起的
if (t.size() < data.size()){
throw new Exception("rule在DB中不唯⼀");
鸡肉炒贝母的功效}
⼆、多字段联合校验
唐伯虎书法判断流程和单字段⼀样,只需要在上述过程中的Comparator后⾯添加需要判断的字段即可,例如联合校验rule和type
Set<RuleAssign> t = new TreeSet<>(paring(RuleAssign::getRule)
.thenComparing(RuleAssign::getType));
合理利⽤Comparator构造器即可完成各种情况下的重复判断。

本文发布于:2023-05-18 19:55:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/913998.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   字段   判断   修改   新增   校验
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图