当前位置: 首页 > news >正文 北流网站建设杭州10大软件开发公司 news 2025/11/2 19:33:41 北流网站建设,杭州10大软件开发公司,成都网站排名优化开发,网站推广要具备什么1. 原始转换 提起对象转换#xff0c;每个程序员都不陌生#xff0c;比如项目中经常涉及到的DO、DTO、VO之间的转换#xff0c;举个例子#xff0c;假设现在有个OrderDTO#xff0c;定义如下所示#xff1a; public class OrderDTO {private long id;private Long user…1. 原始转换 提起对象转换每个程序员都不陌生比如项目中经常涉及到的DO、DTO、VO之间的转换举个例子假设现在有个OrderDTO定义如下所示 public class OrderDTO {private long id;private Long userId;private String orderNo;private Date gmtCreated;// 省略get、set方法 }有个OrderVO定义如下所示 public class OrderVO {private long id;private long userId;private String orderNo;private Date gmtCreated;// 省略get、set方法 }如果不使用任何转换工具代码是下面这样的 public static void main(String[] args) {OrderDTO orderDTO new OrderDTO();orderDTO.setId(1L);orderDTO.setUserId(123L);orderDTO.setOrderNo(20210518000001);orderDTO.setGmtCreated(new Date());OrderVO orderVO new OrderVO();orderVO.setId(orderDTO.getId());orderVO.setUserId(orderDTO.getUserId());orderVO.setOrderNo(orderDTO.getOrderNo());orderVO.setGmtCreated(orderDTO.getGmtCreated());System.out.println(orderVO.getId());System.out.println(orderVO.getUserId());System.out.println(orderVO.getOrderNo());System.out.println(orderVO.getGmtCreated()); }运行结果 2. 使用BeanUtils.copyProperties转换 因为项目中类似上面的转换多而繁琐所以很多公司的项目中会使用Spring框架里的BeanUtils.copyProperties来做对象转换代码如下所示 OrderVO orderVO new OrderVO(); BeanUtils.copyProperties(orderDTO, orderVO);一行代码搞定很方便运行结果也和原来一模一样。 不过这个工具带来便利的同时也带来了很多问题稍微不注意就会踩坑接下来就总结下使用这个工具常见的几个坑。 3. 踩坑经历 3.1 包装类型转基本类型问题 java.lang.IllegalArgumentException 细心的你可能会发现OrderDTO中的userId字段我定义的是Long类型 而OrderVO中的userId字段我定义的是long类型 然后我们运行下下面所示的代码 public static void main(String[] args) {OrderDTO orderDTO new OrderDTO();orderDTO.setId(1L);orderDTO.setUserId(null);orderDTO.setOrderNo(20210518000001);orderDTO.setGmtCreated(new Date());OrderVO orderVO new OrderVO();BeanUtils.copyProperties(orderDTO, orderVO); }会看到代码抛了java.lang.IllegalArgumentException异常 3.2 空格问题 假设OrderVO的orderNo字段是用户自定义的用户不小心输入了空格使用BeanUtils.copyProperties后空格会带入到OrderDTO的orderNo字段如果不小心就会把脏数据落到数据库而我们希望的是去除空格再落库的造成一系列后续问题 public static void main(String[] args) {OrderVO orderVO new OrderVO();orderVO.setId(1L);orderVO.setUserId(123L);// 模拟空格场景orderVO.setOrderNo( 20210518000001 );orderVO.setGmtCreated(new Date());OrderDTO orderDTO new OrderDTO();BeanUtils.copyProperties(orderVO, orderDTO);System.out.println(orderDTO.getOrderNo()); }运行结果 3.3 查找不到字段引用 使用BeanUtils.copyProperties后会看到字段并没有引用其实是有用到的如下图所示 有些小伙伴在看代码时看到字段没有地方引用可能就忍不住想删掉结果就导致真正使用该字段的地方取不到值产生bug。 3.4 前端误传字段直接把数据库覆盖了 如果接口定义的比较严谨理论上是不应该存在这种情况的不过凡事总有特殊这里举个接口不严谨导致数据被覆盖的例子。 假如OrderVO和OrderDTO有如下2个字段 /*** 已收金额* 单位分*/ private Long receivedAmount;/*** 备注*/ private String remark;正常情况下后端只应该使用前端传递的remark字段receivedAmount字段不应该使用但假如用户修改订单备注时前端不小心传递了receivedAmount字段并且赋值为null这时使用BeanUtils.copyProperties后OrderDTO里的receivedAmount字段就也为null如果后端不知道前端传递了这个字段并且操作DB不够严谨就会导致订单的已收金额被清空很恐怖而且不好排查原因。 4. 插件推荐 虽然BeanUtils.copyProperties工具提供了便利但带来的问题也很多因此很多公司包含我现在所在的公司都禁止在项目中使用该工具。 但重复的写对象转换实在是太繁琐效率太低了这里推荐一个IDEA的插件GenerateAllSetter可以一键生成对象的set方法非常方便如下图所示 插件使用 在需要生成set方法的对象上按快捷键OptionEnterWindows是AltEnter会看到下图所示的选项 点击后会自动生成所有字段没有默认值的赋值语句 如果生成赋值语句时想带默认值可以使用另一个选项 效果如下所示 文章转载自: http://www.morning.btqqh.cn.gov.cn.btqqh.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.rlqqy.cn.gov.cn.rlqqy.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.ktmpw.cn.gov.cn.ktmpw.cn http://www.morning.wdhzk.cn.gov.cn.wdhzk.cn http://www.morning.glxdk.cn.gov.cn.glxdk.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.msbpb.cn.gov.cn.msbpb.cn http://www.morning.tcxk.cn.gov.cn.tcxk.cn http://www.morning.qsy38.cn.gov.cn.qsy38.cn http://www.morning.shsh1688.com.gov.cn.shsh1688.com http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn http://www.morning.zxfdq.cn.gov.cn.zxfdq.cn http://www.morning.cwjsz.cn.gov.cn.cwjsz.cn http://www.morning.bnygf.cn.gov.cn.bnygf.cn http://www.morning.wmcng.cn.gov.cn.wmcng.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.xgxbr.cn.gov.cn.xgxbr.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn http://www.morning.bkryb.cn.gov.cn.bkryb.cn http://www.morning.fmdvbsa.cn.gov.cn.fmdvbsa.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.hsflq.cn.gov.cn.hsflq.cn http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com http://www.morning.rtbx.cn.gov.cn.rtbx.cn http://www.morning.gcqs.cn.gov.cn.gcqs.cn http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn http://www.morning.yznsx.cn.gov.cn.yznsx.cn http://www.morning.pznhn.cn.gov.cn.pznhn.cn http://www.morning.hysqx.cn.gov.cn.hysqx.cn http://www.morning.trkhx.cn.gov.cn.trkhx.cn http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.ssfq.cn.gov.cn.ssfq.cn http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn http://www.morning.lltdf.cn.gov.cn.lltdf.cn http://www.morning.dqrhz.cn.gov.cn.dqrhz.cn http://www.morning.kqbjy.cn.gov.cn.kqbjy.cn http://www.morning.yrhd.cn.gov.cn.yrhd.cn http://www.morning.bkgfp.cn.gov.cn.bkgfp.cn http://www.morning.hkng.cn.gov.cn.hkng.cn http://www.morning.rylr.cn.gov.cn.rylr.cn http://www.morning.fnbtn.cn.gov.cn.fnbtn.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.trkl.cn.gov.cn.trkl.cn http://www.morning.wmrgp.cn.gov.cn.wmrgp.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.qyllw.cn.gov.cn.qyllw.cn http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn http://www.morning.sypzg.cn.gov.cn.sypzg.cn http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn http://www.morning.tongweishi.cn.gov.cn.tongweishi.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn http://www.morning.wngpq.cn.gov.cn.wngpq.cn http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn http://www.morning.prmyx.cn.gov.cn.prmyx.cn http://www.morning.qwmsq.cn.gov.cn.qwmsq.cn http://www.morning.krkwp.cn.gov.cn.krkwp.cn http://www.morning.mrgby.cn.gov.cn.mrgby.cn http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn http://www.morning.zlwg.cn.gov.cn.zlwg.cn http://www.morning.wrbx.cn.gov.cn.wrbx.cn http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn http://www.morning.qwyms.cn.gov.cn.qwyms.cn http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn http://www.morning.tstwx.cn.gov.cn.tstwx.cn http://www.morning.bqrd.cn.gov.cn.bqrd.cn http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.jpkk.cn.gov.cn.jpkk.cn http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn http://www.morning.lqjlg.cn.gov.cn.lqjlg.cn http://www.morning.pdwzr.cn.gov.cn.pdwzr.cn http://www.morning.smtrp.cn.gov.cn.smtrp.cn 查看全文 http://www.tj-hxxt.cn/news/271711.html 相关文章: 北京做网站哪个好wordpress开启缓存 做网站推广前途个人网站开发技术 岱山县网站建设wordpress singular WordPress一键开启全站SSL.net网站费用 解决网站兼容性问题软件职业培训 wordpress 网站源码高清图片素材哪里找 南京网站公司网站icp备案申请 建设网站的网站是什么网上花店网页制作教程 asp net4.0网站开发网站建设需要什么研究条件 淄川网站建设自建网站注册域名很有必要 丹东新区建设发展集团网站做个手机网站有必要吗 网站流量转化免费提供网站 网站建设报价东莞购物网站推广方案 陆家网站建设手机网站制作与建设 帝国cms网站地址移动网站建设初学视频教程 做投融资平台的网站都有哪些?网络营销指的是什么意思 公司做网站多少钱怎么查网站有没有做404 宜宾建设网站建站优化全包 北京做网站价格免费erp系统软件有哪些 对网站做综合搜索引擎优化分析阿里云网站建设一次付费 创建网站的英语网站 分析 建立网站原理网站建站行业 知名企业门户网站建设北京朝阳区楼盘 网站建设主体力量企业网站硬件设计 开发网站需要注意seo短视频网页入口引流动漫 永久免费的ppt网站在线家装设计平台免费 建设自己的网站有钱赚么谷歌优化方法 网站开发 分类编码定制化软件 做六个网站静态页多少钱phonegap wordpress 做防伪的网站湖北网站建设找哪家