JAVA的映射工具 BeanUtils dozer的使用方法

1.BeanUtils的使用

BeanUtils.copyProperties(A, B)      //将B的值映射给A

要求:映射的字段名称要一致

具体的方法及理论见    https://blog.csdn.net/megustas_jjc/article/details/53525026  大神写的相当详细

2.dozer的使用

对于映射工具来说,dozer是个相当令人满意的选择,它可以灵活地处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。

首先就是添加依赖

<!-- https://mvnrepository.com/artifact/net.sf.dozer/dozer-spring -->
<dependency>
    <groupId>net.sf.dozer</groupId>
    <artifactId>dozer-spring</artifactId>
    <version>5.5.1</version>
</dependency>
 

① 项目中使用dozer

如果要映射的两个对象有完全相同的属性名,则只需要直接使用Dozer的API即可:

Mapper mapper = new DozerBeanMapper();
DestinationObject destObject = mapper.map(sourceObject, DestinationObject.class);

但是在实际映射当中,往往会存在属性名不相同的映射。这时候只需要添加配置文件告诉Dozer怎么映射即可。在现实应用中最好不要每次映射对象时都创建一个Mapper实例来工作,这样会产生不必要的开销。如果不使用IoC容器(Spring)来管理,则最好将Mapper定义为单例模式。

配置文件如下:

首先在<mapper>中写入两个相互映射的类<class-a>和<class-b>,<field>标签里定义要映射的特殊属性。<a>里是<class-a>的字段,相应的<b>是<class-b>中要映射的字段。

<?xml version="1.0"
encoding="UTF-8"?>

<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://dozer.sourceforge.net
	http://dozer.sourceforge.net/schema/beanmapping.xsd">

	<configuration>
		<date-format>MM/dd/yyyy HH:mm</date-format>
	</configuration>
<!--  date-format="MM-dd-yyyy HH:mm:ss" -->
	<mapping>
		<class-a>dozer.jqq.BeanDO.UserDO</class-a>
		<class-b>dozer.jqq.BeanVO.UserVO</class-b>
		<field>
			<a>create_time</a>
			<b>createTime</b>
			<!-- <a-hint>create_time</a-hint>
			<b-hint>createTime</b-hint> -->
		</field>
		<field>
			<a>password</a>
			<b>passaword</b>
		</field>
	</mapping>

</mappings>

将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整合Dozer

首先,在spring下创建spring-dozer.xml,我将配置文件写在了dozer文件夹里。Dozer与Spring整合,只要声明一个DozerBeanMapperFactoryBean,然后将所有的dozer映射配置文件作为属性注入到mappingFiles,DozerBeanMapperFactoryBean会自动载入这些规则。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
       default-autowire="byName" default-lazy-init="false">

  <bean id="mapper" class="org.dozer.spring.DozerBeanMapperFactoryBean">
    <property name="mappingFiles">
      <list>
        <!-- 把Dozer映射文件引入 -->
        <value>classpath*:dozer/dozer-mapping.xml</value>
      </list>
    </property>
  </bean>
</beans>

 

然后在代码中直接写如下代码即可:

Mapper mapper = DozerBeanMapperSingletonWrapper.getInstance();
mapper.map(userDO, userVO);

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值