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

网站设计定制红河州做网站

网站设计定制,红河州做网站,阿里企业网站建设,seo站长工具下载选择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/881897/

相关文章:

  • 郑州网站建设老牌公司尤溪住房和城乡建设局网站
  • 公司建网站的步骤是什么网站开发浏览器兼容
  • 华为手表网站网络商城营业执照经营范围
  • 云速网站建设什么网站可以做字体效果
  • 简单设计软件wordpress 关键词优化
  • 北海建设厅网站单页网站建设哪个品牌好
  • 织梦网站模板做的网站有哪些定制高端网站的公司
  • 如何做外文网站四川城乡住房建设部网站
  • 可信网站认证有用吗wordpress旅游社区
  • 建网站需要多少资金wordpress后缀
  • 百度网站建设wordpress添加面包屑
  • 购物网站开发设计动漫设计与制作好就业吗
  • 广东的网站备案连江建设局网站
  • 济南网站建设方案托管长治做网站多少钱
  • 免费做淘宝联盟网站企业培训机构网站源码
  • 前端可以自己做网站么seo优化推广技巧
  • 成都网站制作的公司做网站设计哪家好
  • 国家批准做新闻的网站人力资源管理师报名时间2022年
  • 北京旗网站制作iis7 添加网站
  • 广州做网站信息天河网站建设网络推广
  • 代理二级分销系统沧州seo排名
  • 响应式自助建站平台南宁网络推广有限公司
  • 海口专业网站建设公司海口网上房地产
  • 北京专业网站开发厦门seo总部电话
  • 网站建设分几步购物网站开发文档mvc
  • 云奇网站建设wordpress wp-config.php
  • 网站建设行业数据网站运营推广
  • 网页设计与网站建设案例教程wordpress权限不够
  • 制作静态网站模板苏州集团网站设计企业
  • 要找做冲压件的厂去哪个网站找自己公司设计一个网站