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

广州市研发网站建设怎么样为国外的公司提供网站建设 维护

广州市研发网站建设怎么样,为国外的公司提供网站建设 维护,北海 做网站 英文,丽之鑫科技网站后台怎么做选择Cglib的BeanCopier进行Bean拷贝的理由是, 其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多, 尤其是数据量比较大的情况下。 BeanCopier的主要作用是将数据库层面的Entity转化成service层的POJO。BeanCopier其实已…

选择Cglib的BeanCopier进行Bean拷贝的理由是,
其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,
尤其是数据量比较大的情况下。

  • BeanCopier的主要作用是将数据库层面的Entity转化成service层的POJO。BeanCopier其实已经有很多开源版本,例如DozerMapper、Apache BeanUtils、Spring、Jodd BeanUtils甚至是Cglib都提供了这样的功能。我们这里讲的BeanCopier来自net.sf.cglib.BeanCopier包,cglib是一款比较底层的操作java字节码的框架。 而其他多数都是基于 反射 来实现的 对象复制,所以更底层的字节码方式获取数据赋值,效率会更高
  • 顾名思义,BeanCopier是用于在两个bean之间进行属性拷贝的。BeanCopier支持两种方式,一种是不使用Converter的方式,仅对两个bean间属性名和类型完全相同的变量进行拷贝。另一种则引入Converter,可以对某些特定属性值进行特殊操作。

简单用例 


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.cglib.core.Converter;import java.math.BigDecimal;import java.sql.Timestamp;
import java.text.SimpleDateFormat;import static org.junit.jupiter.api.Assertions.*;class BeanCopyUtilsTest {/*** 测试说明: 类型不同BeanCopier不会拷贝*/@Testvoid copy() {User user = new User();user.setId(1);user.setName("dearth");BeanCopier copier = BeanCopier.create(User.class, UserVo.class, false);UserVo userVo = new UserVo();copier.copy(user, userVo, null);Assertions.assertNull(userVo.getId());}/*** 测试说明: 提供转换器可以实现不同类型的拷贝*/@Testvoid copyUseConverter() {User user = new User();user.setId(1);user.setName("dearth");user.setCreateTime(new Timestamp(10043143243L));user.setBalance(BigDecimal.valueOf(4000L));BeanCopier copier = BeanCopier.create(User.class, UserVo.class, true);UserVo vo = new UserVo();copier.copy(user, vo, new UserConverter());Assertions.assertNotNull(vo.getCreateTime());Assertions.assertNotNull(vo.getBalance());}@Data@NoArgsConstructor@AllArgsConstructorstaticclass User {private String name;private int id;private Timestamp createTime;private BigDecimal balance;}@Data@NoArgsConstructor@AllArgsConstructorstaticclass UserVo {private String name;private Integer id;private String createTime;private String balance;}static class UserConverter implements Converter {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@Overridepublic Object convert(Object o, Class aClass, Object o1) {if (o instanceof Integer) {return (Integer) o;} else if (o instanceof Timestamp) {Timestamp data = (Timestamp) o;return sdf.format(data);} else if (o instanceof BigDecimal) {BigDecimal bg = (BigDecimal) o;return bg.toPlainString();} else {return null;}}}
}

 

  1. BeanCopier只拷贝名称和类型都相同的属性。
  2. 当目标类的setter数目比getter少时,创建BeanCopier会失败而导致拷贝不成功。
  3. 自定义Converter转换器可以转换不同类型的属性

 

http://www.yayakq.cn/news/472213/

相关文章:

  • 企业定制网站价格表端午节网站制作
  • 成都地区网站开发成本泸州房产网
  • 快速微信网站建设vi设计方案
  • 湖南省长沙建设厅网站淮北市重点工程建设局网站
  • 长沙开福区专业网站制作长沙网站制作哪
  • dedecms如何做音乐网站房地产趋势与前景
  • 牛搬家网企业网站排名xml网站地图生成器
  • wordpress站外链接跳转页面3d建模人物软件
  • 句容建设质检站网站国内消息最新新闻
  • 微信手机官方网站wordpress底部悬浮
  • 资阳网站开发移动端网站交互效果最好的
  • 南昌网站开发商哪家强空调安装东莞网站建设
  • 专业足球网站开发昌图网站推广
  • 中国网站设计wordpress上传网站
  • 平面设计与网站开发的概述建立视觉健康档案的主要意义在于
  • 福州网站设计培训wordpress商家展示主题
  • 三拼域名做网站wordpress 插件被墙
  • 教育考试类网站建设苏州自助建站模板
  • 优秀htm网站建设局和住建局是一个部门吗
  • 郑州网站建设详细内容推荐怎么做网站的排名优化
  • 花生壳网站无法登陆做社交网站用什么语言
  • 北京网站建设优化学校做零食网站的首页模板
  • 建设部资质查询网站点样做网站
  • 设计教育网站手机上的软件网站建设
  • 分析网站的网站专业公司网络推广
  • 深圳网站搭建专做立体化的网站
  • 百度制作网站推广常见的门户网站有哪些
  • 灵犀科技 高端网站建设网站建设出找不到网页
  • 有哪些网站可以兼职做笔译wordpress下拉菜单的阴影怎么改
  • 新网站不收录网站后台登入不了出现验证码错误