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

小程序网站竞价服务托管公司

小程序网站,竞价服务托管公司,免费建手机个人网站,wordpress多功能博客选择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.khdw.cn/news/61832.html

相关文章:

  • 微网站 下载自动推广引流app
  • 长沙百度网站建设培训心得体会2000字
  • dz论坛识别手机网站自动跳转百度推广账户登录
  • 个人网站做影视山东服务好的seo公司
  • 第一次做网站选多大空间微信crm系统
  • 潍坊网站建设公司哪家好找客户资源的网站
  • 宁波网站推广运营公司seo短视频入口
  • 蛋糕行业网站建设方案快速收录工具
  • 兽装定制网站安徽seo网络优化师
  • 网站建设优化重庆今日国际新闻摘抄
  • 有做任务赚钱的网站如何进行网站推广
  • 做网站 阿里云和百度云哪个好网络优化工资一般多少
  • 做外汇必须要网站营销策略都有哪些
  • 阿里巴巴网站怎样做的漂亮如何制作个人网站
  • vs2005做的网站转换为2012中国网络优化公司排名
  • 武汉自助建站模板最新疫情最新情况
  • 冷门且好听的公司名字seo优化技术排名
  • 三亚人才招聘网站网站建设公司排行榜
  • 做任务挣钱网站搜索引擎 磁力吧
  • php网站开发 实战教程营销活动怎么做吸引人
  • 企业安全文化宣传标语新乡网站优化公司价格
  • 企业网站怎么做推广百度客户端电脑版
  • 衡水需要做网站的公司免费python在线网站
  • 陕西 网站建设 陕ICP深圳纯手工seo
  • 长沙flash网站设计最新搜索关键词
  • 打电话来说做网站 然后答应了腾讯广告推广怎么做
  • 深圳品牌营销网站建设百度浏览器在线打开
  • 石家庄做网站哪家好seo网站推广经理
  • 手机端网站建设哪家好百度竞价点击软件
  • c 手机版网站开发东莞网站seo优化托管