BeanUtils.copyProperties(A, B) //将B的值映射给A
要求:映射的字段名称要一致
具体的方法及理论见 https://blog.csdn.net/megustas_jjc/article/details/53525026 大神写的相当详细
对于映射工具来说,dozer是个相当令人满意的选择,它可以灵活地处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。
首先就是添加依赖
如果要映射的两个对象有完全相同的属性名,则只需要直接使用Dozer的API即可:
Mapper mapper = new DozerBeanMapper();
DestinationObject destObject = mapper.map(sourceObject, DestinationObject.class);
但是在实际映射当中,往往会存在属性名不相同的映射。这时候只需要添加配置文件告诉Dozer怎么映射即可。在现实应用中最好不要每次映射对象时都创建一个Mapper实例来工作,这样会产生不必要的开销。如果不使用IoC容器(Spring)来管理,则最好将Mapper定义为单例模式。
配置文件如下:
首先在
MM/dd/yyyy HH:mm
dozer.jqq.BeanDO.UserDO
dozer.jqq.BeanVO.UserVO
create_time
createTime
password
passaword
将dozerBeanMapping.xml配置文件放在resources根目录下:
DozerBeanMapper mapper = new DozerBeanMapper();
UserVO vo = mapper.map(userDO, UserVO.class);
如若配置文件放在了其他位置,则需要添加如下几行代码:
List myMapperFile = new ArrayList();
myMapperFile.add("****/dozer-mapper.xml");
mapper.setMappingFiles(myMapperFile);
首先,在spring下创建spring-dozer.xml,我将配置文件写在了dozer文件夹里。Dozer与Spring整合,只要声明一个DozerBeanMapperFactoryBean,然后将所有的dozer映射配置文件作为属性注入到mappingFiles,DozerBeanMapperFactoryBean会自动载入这些规则。
classpath*:dozer/dozer-mapping.xml
然后在代码中直接写如下代码即可:
Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
mapper.map(userDO, userVO);