BeanCopier系列之一:特性测试
BeanCopier系列之三:缓存BeanCopier提升性能
当源和目标类的属性类型不同时,不能拷贝该属性,此时我们可以通过实现Converter接口来自定义转换器:
源类和目标类:
public class AccountEntity {
private int id;
private Timestamp createTime;
private BigDecimal balance;
// Getters and setters are omitted
}
public class AccountDto {
private int id;
private String name;
private String createTime;
private String balance;
// Getters and setters are omitted
}
1. 不使用Converter
public class BeanCopierConverterTest {
@Test
public void noConverterTest() {
AccountEntity po = new AccountEntity();
po.setId(1);
po.setCreateTime(new Timestamp(10043143243L));
po.setBalance(BigDecimal.valueOf(4000L));
BeanCopier copier = BeanCopier.create(AccountEntity.class, AccountDto.class, false);
AccountDto dto = new AccountDto();
copier.copy(po, dto, null);
Assert.assertNull(dto.getCreateTime()); // 类型不同,未拷贝
Assert.assertNull(dto.getBalance()); // 类型不同,未拷贝
}
}
2. 使用Converter
基于目标对象的属性出发,如果源对象有相同名称的属性,则调一次convert方法:
package net.sf.cglib.core;
public interface Converter {
// value 源对象属性,target 目标对象属性类,context 目标对象setter方法名
Object convert(Object value, Class target, Object context);
}
@Test
public void converterTest() {
AccountEntity po = new AccountEntity();
po.setId(1);
po.setCreateTime(Timestamp.valueOf("2014-04-12 16:16:15"));
po.setBalance(BigDecimal.valueOf(4000L));
BeanCopier copier = BeanCopier.create(AccountEntity.class, AccountDto.class, true);
AccountConverter converter = new AccountConverter();
AccountDto dto = new AccountDto();
copier.copy(po, dto, converter);
Assert.assertEquals("2014-04-12 16:16:15", dto.getCreateTime());
Assert.assertEquals("4000", dto.getBalance());
}
static class AccountConverter implements Converter {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@SuppressWarnings("rawtypes")
@Override
public Object convert(Object value, Class target, Object context) {
if (value instanceof Integer) {
return (Integer) value;
} else if (value instanceof Timestamp) {
Timestamp date = (Timestamp) value;
return sdf.format(date);
} else if (value instanceof BigDecimal) {
BigDecimal bd = (BigDecimal) value;
return bd.toPlainString();
}
return null;
}
}
注:一旦使用Converter,BeanCopier只使用Converter定义的规则去拷贝属性,所以在convert方法中要考虑所有的属性。
分享到:
相关推荐
工具提供以下14种转换功能:十进制转二进制、十进制转八进制、十进制转十六进制、二进制转十进制、二进制转十六进制、十六进制转十进制、十六进制转二进制;字符串转ASCII码、字符串转Unicode、字符串完全转Unicode...
工具提供以下14种转换功能:十进制转二进制、十进制转八进制、十进制转十六进制、二进制转十进制、二进制转十六进制、十六进制转十进制、十六进制转二进制;字符串转ASCII码、字符串转Unicode、字符串完全转Unicode...
超级好用的PDF转WORD工具,绿色版,解压后运行SolidConverterPDF.exe。 比3.0版的好用多了。转换的WORD可任意复制、编辑。
工具提供以下14种转换功能:十进制转二进制、十进制转八进制、十进制转十六进制、二进制转十进制、二进制转十六进制、十六进制转十进制、十六进制转二进制;字符串转ASCII码、字符串转Unicode、字符串完全转Unicode...
第二步:使用“注册补丁”文件夹中的文件替换掉安装目录中的同名源文件。默认安装目录在:C:\Program Files\SolidDocuments\Solid Converter PDF\SCPDF,将SCPDFCreator.dll和SdAppSrv.dll两个文件复制到安装目录下...
软件简介: Solid Converter PDF 是一款非常强大而且专业的PDF格式转换工具,可用它将PDF转成Word等常见类型文件或将...二、安装的Microsoft Word版本过低或功能不完整;三、PDF文件本身是扫描图片文件,非文本文件。
媒体转换器 地位: Media Converter 是一个用 Java 编写的简单易用... ffmpeg 的预构建二进制文件(您可以从获得一个,或者使用您自己的) 现在.jar本身包含的ffmpeg可执行文件 :grinning_face_with_smiling_eyes: .
Retrofit的简单分装类,将call中的泛型改为需要的实体类然后加入接口就可以直接使用 gradle中需要添加 implementation 'com.squareup.retrofit2:converter-gson:2.0.2' implementation '...
Maven坐标:org.activiti:activiti-bpmn-converter:5.21.0; 标签:activiti、bpmn、converter、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
Maven坐标:org.activiti:activiti-json-converter:5.21.0; 标签:activiti、json、converter、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
Maven坐标:org.activiti:activiti-json-converter:5.21.0; 标签:activiti、json、converter、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性...
使用方法:在菜单中选择要转换的格式,为你的输出文件选择目标文件夹,选择转换时你想包含的元素,支持文档旋转,可向左或向右旋转90度。设置指定文档的纸张大小,纸张方向以及纸张边距等,点击开始转换即可。压缩包...
VMware_vSphere_4.1虚拟化学习手册11:使用Converter工具V2V、P2V导入虚拟机
Vmware Converter使用方法
文件转换器描述File Converter是一个非常简单的工具,可让您使用Windows资源管理器的上下文菜单转换和压缩一个或多个文件。 您可以在这里下载它: 。 您可以在上找到有关文件转换器中的内容以及如何使用它的更多信息...
可以解决implementation 'com.squareup.retrofit2:converter-gosn:2.5.0' 依赖失败的问题
PDFConverter工具提供的功能 旋转Pdf [90°,180°,270°,360°] 合并PDF(合并所有上载或删除的pdf文件) 分割PDF(根据提供的页码分割pdf) 将Pdf转换为[JPEG,PNG,HTML,文本] 作物Pdf 下载修改后的pdf或...
CTF编码解密工具软件,Converter Version: 0.14 最后一个版本了,新的换.Net了。
PNACH Converter converts PNACH files into the following formats: PNACH转换器将PNACH文件转换为以下格式: - RAW PS2 cheat codes -原始PS2作弊代码 - Unique HEX search/replace strings -唯一十六进制搜索/...
软件简介: Solid Converter PDF 是一款非常强大而且专业的PDF格式转换工具,可用它将PDF转成Word等常见类型文件或将...二、安装的Microsoft Word版本过低或功能不完整;三、PDF文件本身是扫描图片文件,非文本文件。