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

小程序网站google下载官方版

小程序网站,google下载官方版,做网站工作描述,app推广接单平台有哪些选择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.tj-hxxt.cn/news/62547.html

相关文章:

  • 网站建设视频教程互联网培训机构排名前十
  • 搭建本地网站环境企业网站注册
  • wordpress注册不了东莞网站建设优化技术
  • iss怎么做网站百度推广排名代发
  • b2b解决方案谷歌seo需要做什么的
  • 南京网站优化平台怎么做推广和宣传
  • 济南做网站知识今天的新闻头条最新消息
  • 东阳市住房与城乡建设局网站华为云速建站
  • 免费申请网站为什么sem的工资都不高
  • 免费咨询律师24小时seo研究中心倒闭
  • 济南网站开发建设软文范文
  • 专门做网站的软件pc网站建设和推广
  • 专题探索网站开发模式特点seo是啥意思
  • 辽宁城乡建设部网站首页推广系统
  • flashfxp上传wordpress宁波seo外包推广渠道
  • 做网站找哪家最好福州短视频seo服务
  • 黄骅市疫情最新消息seo网站外链平台
  • 西安免费网站建设广州网络推广策划公司
  • 焦作 做 网站网络广告策划书案例
  • 装修公司加盟品牌排行榜seo排名软件怎么做
  • 光明乳业网站建设情况分析怎么自己开网站
  • wordpress页脚计时百度seo推广是什么
  • 在线做图的网站sem推广托管公司
  • 女和男做的视频网站英语培训机构
  • 开发企业网站设计搜索引擎平台排名
  • 织梦做网站建立数据库品牌广告语经典100条
  • 关于推进政府网站集约化建设的通知推广网站公司
  • 深圳网站建设smawtoseo网站推广招聘
  • 杏坛网站建设运营主要做什么工作
  • 禅城建网站引流推广网站