当前位置: 首页 > news >正文

昊诺网站建设网络推广重庆营销网站建设公司

昊诺网站建设网络推广,重庆营销网站建设公司,福田瑞沃小金刚,电脑技术学习网站关于在集合中对象比较属性值的问题1 问题说明2 问题排查3 总结及伪代码楼主在最近遇到一个场景#xff0c;项目中有一个校验。 需要将数据库查询的集合对象与前端传递的集合对象进行比较#xff0c;看数据是否被修改。 1 问题说明 基于上面项目需求#xff0c;项目为较老的… 关于在集合中对象比较属性值的问题1 问题说明2 问题排查3 总结及伪代码楼主在最近遇到一个场景项目中有一个校验。 需要将数据库查询的集合对象与前端传递的集合对象进行比较看数据是否被修改。 1 问题说明 基于上面项目需求项目为较老的传统项目没使用Lombok插件划重点实体类和DTO,BO对象都是原有get、set方法等等。项目之前运行正常且没有任何问题。接到新需求需要多添加某些字段。 再一顿CRUD的基础操作之后代码加上去实体类对应的页面增删改查都没有问题。于是极度自信提交代码。O(∩_∩)O 在代码中上述校验处突然报错直接给我整懵逼。 2 问题排查 本着哪里有问题就解决哪里的思维。 首先怀疑是不是前端传值有误差前端问题在集合比较处添加上相关日志抓取日志分析对比数据后发现数据没有问题无论是前端传参还是后端数据库查询。 问题已经很明显了加的代码有问题。不可能绝对不可能 虽然吧但是可以确认就是自己加出问题了。然后看了下集合比较的方法是collections.subtract。这个方法常用来比较两个集合的差值而且一般用在基本的数据类型比较如字符串集合数字集合等等。再对象集合比较用的还是较少。 已经知道了是这个方法比较的问题查看了一下实体类和DTO对象新增字段set、get方法也都给写了包括toString方法也重写了。看了两个对象一下子又没思路了突然想到比较两个对象值需要重写equals和hashcode方法。掐自己一下检查了一下实体类和DTO对象因实体类不做比较故没加equals和hashcode方法。而DTO对象因用来做了比较所以都重写了这两个方法。看了一下DTO对象中仅仅只加了属性和get、set方法以及toString方法。 按照思路在equals和hashcode方法中加上新增字段启动项目测试成功了撒花 3 总结及伪代码 思考了一下问题的出现。 因平时接触新项目都是用lombok插件对于对象的字段的删减平时只需要注意对象本身以及xml文件中的sql拼写对于对象基本的toStringequalshashcode等方法关注不多。基本忽视在老项目中没使用lombok插件没人来帮忙写这些基础的对象方法所以在一个简单的增减字段的需求时需要花一些时间来关注对象本身的方法。这也正说明lombok插件也是蛮方便减少了这类小问题。 伪代码 原有对象 public class UserDTO {private String id;private String name;public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return UserDTO{ id id \ , name name \ };}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;UserDTO userDTO (UserDTO) o;return Objects.equals(id, userDTO.id) Objects.equals(name, userDTO.name);}Overridepublic int hashCode() {return Objects.hash(id, name);} }添加新字段 public class UserDTO {private String id;private String name;// 新加字段手机号private String phone;public String getPhone() {return phone;}public void setPhone(String phone) {this.phone phone;}public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return UserDTO{ id id \ , name name \ , phone phone \ };}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;UserDTO userDTO (UserDTO) o;return Objects.equals(id, userDTO.id) Objects.equals(name, userDTO.name);}Overridepublic int hashCode() {return Objects.hash(id, name);} }比较逻辑代码 // 前端传参数 ListUserDTO reqList new ArrayList(); // 数据库查询 ListUserDTO respList new ArrayList(); // 两个集合差集 ListUserDTO resultList CollectionUtils.subtract(reqList,respList) // 判断集合中数据是否改变 if(CollectionUtils.isNotEmpty(resultList)){// 前端数据中,传了手机号,一直识别不出来,添加名称则可以识别出来,在DTO对象中equals方法中添加手机号即可 }最后状态 public class UserDTO {private String id;private String name;private String phone;// 省略set/get方法Overridepublic String toString() {return UserDTO{ id id \ , name name \ , phone phone \ };}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;UserDTO userDTO (UserDTO) o;return Objects.equals(id, userDTO.id) Objects.equals(name, userDTO.name) Objects.equals(phone, userDTO.phone);}Overridepublic int hashCode() {return Objects.hash(id, name, phone);} }
http://www.hkea.cn/news/14483391/

相关文章:

  • 移动端网站seo伪静态 wordpress
  • 网站社区建设嘉兴网站排名优化报价
  • 免费品牌网站制作金融网站设计方向
  • 网站建设公司 合肥成都it外包公司
  • 网站点击换图片的效果怎么做电商网站开发前景
  • 网站建设类型报价表编程培训机构有哪些
  • 用dedecms做的网站 脚本是什么云商城
  • 企业网站如何推广网站模板下载软件
  • 晋城客运东站网站开发烟台市福山区住房和建设局网站
  • 高品质网站建设公司网页游戏排行榜百战沙城
  • 会展网站代码源码网页设计实验报告心得和总结500字
  • 做视频网站把视频放在哪里wordpress就是博客吗
  • 第三方交易网站怎么做运动服装商城网站建设
  • 网站怎么做外链接做电影平台网站怎么赚钱吗
  • aspx网站开发 案例miit网站备案
  • 徐州cms建站电商学院建设设计网站
  • 建造师免费自学网站seo网站技术培训
  • wordpress建设网站网站 欣赏
  • 视觉传达毕业设计作品网站温州网页设计
  • 广州h5设计网站公司中国版动漫网站模板
  • 2018网站设计报价表做网站微信朋友圈应该怎么发
  • sns社区网站开发怎么做网站编辑
  • 咸宁网站制作培训百度信息流推广是什么意思
  • 新乡网站建设制作报价方案陕西煤业化工建设集团网站
  • 电商网站建设 教学总结各大搜索引擎收录入口
  • 百度如何推广网站wordpress视频自动播放
  • 多网站建设网页编辑和发布流程不包括以下哪个选项
  • 重庆网站平台网站备案 收费
  • Iis 建网站为什么说没有该用户唐山seo设计网站
  • 二级网站建设方案 试行上海工商网查询官网