偶然发现有个属性拷贝的类比较好用,比org.springframework.beans.BeanUtils性能好.
先看用法:
public static void main(String[] args) {
PayUserThirdaccountVO payUserThirdaccount = new PayUserThirdaccountVO();
payUserThirdaccount.setId("1");
payUserThirdaccount.setThirdpaySystemId("2");
payUserThirdaccount.setThirdpayProviderId("3");
payUserThirdaccount.setThirdpayUserId("4");
payUserThirdaccount.setThirdpayUserName("5");
payUserThirdaccount.setThirdpayOpenId("6");
payUserThirdaccount.setThirdpayOpenName("7");
payUserThirdaccount.setThirdpayUserGrade("8");
payUserThirdaccount.setUserId("9");
payUserThirdaccount.setState("10");
payUserThirdaccount.setStartTime(new Date());
payUserThirdaccount.setStopTime(new Date());
payUserThirdaccount.setAvailBalance(new BigDecimal("1"));
payUserThirdaccount.setTotalBalance(new BigDecimal("1"));
payUserThirdaccount.setInvoiceBalance(new BigDecimal("1"));
payUserThirdaccount.setOthBankPayeeSubAcc("23");
payUserThirdaccount.setOthBankPayeeSubAccName("23");
payUserThirdaccount.setOthBankPayeeSubAccSetteName("23");
PayUserThirdaccountDTO payUserThirdaccountDTO = new PayUserThirdaccountDTO();
BeanCopier copier = BeanCopier.create(PayUserThirdaccountVO.class,PayUserThirdaccountDTO.class,false);
copier.copy(payUserThirdaccount,payUserThirdaccountDTO,null);
System.out.println(JSON.toJSONString(payUserThirdaccountDTO));
}
关键代码是
BeanCopier copier = BeanCopier.create(PayUserThirdaccountVO.class,PayUserThirdaccountDTO.class,false);
copier.copy(payUserThirdaccount,accountBalanceDTO,null);
先创建了一个映射模板,然后调用copy方法,加快了属性映射.
当然也可以设置自己的转换规则
BeanCopier copier = BeanCopier.create(PayUserThirdaccountVO.class,PayUserThirdaccountDTO.class,true);
然后实现net.sf.cglib.core.Converter#convert方法
MyConverter implements Converter
然后把对象放到copy方法的参数里
copier.copy(payUserThirdaccount,accountBalanceDTO,myConverter);