Dozer 初步使用

Dozer官网:

http://dozer.sourceforge.net/documentation/gettingstarted.html

maven引入:

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

还有就是5.4.0和以前的版本5.3.2

<!-- <dependency>
		    <groupId>net.sf.dozer</groupId>
		    <artifactId>dozer</artifactId>
		    <version>5.4.0</version>
		</dependency> -->

Dozer-5.5.1和以前的版本使用上有一点差别:

1.和spring整合时引入的bean已经变了

5.5.1引入的bean是:org.dozer.DozerBeanMapper,(5.5.1已经删除了org.dozer.spring这个包了,好像5.4.0开始引入org.dozer.DozerBeanMapper她的)
老版本是:org.dozer.spring.DozerBeanMapperFactoryBean

 

第一步: 新建各种Bean和转换类

新建一个Info类:

package com.test.dozerspringtest.mode;

import java.util.Date;

public class Info {
	
	private int id;
	private Date createDate;
	private GenderType gender;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public Date getCreateDate() {
		return createDate;
	}
	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}
	public GenderType getGender() {
		return gender;
	}
	public void setGender(GenderType gender) {
		this.gender = gender;
	}
	
	@Override
	public String toString() {
		return "Info [id=" + id + ", createDate=" + createDate + ", gender=" + gender + "]";
	}
	
}

建InfoVO类

package com.test.dozerspringtest.mode;

public class InfoVO {

	private int id;
	private String date;
	private Integer gender;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}
	public Integer getGender() {
		return gender;
	}
	public void setGender(Integer gender) {
		this.gender = gender;
	}
	
	@Override
	public String toString() {
		return "InfoVO [id=" + id + ", date=" + date + ", gender=" + gender + "]";
	}
	
}

新建User类:

package com.test.dozerspringtest.mode;

public class User {

	private int id;
	private String name;
	private String password;
	private Info info;
	private String option;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Info getInfo() {
		return info;
	}
	public void setInfo(Info info) {
		this.info = info;
	}
	public String getOption() {
		return option;
	}
	public void setOption(String option) {
		this.option = option;
	}
	
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password + ", info=" + info + ", option=" + option
				+ "]";
	}
	
	
}

再建UserVO类:

package com.test.dozerspringtest.mode;

public class UserVO {

	private int id;
	private String userName;
	private String password;
	private InfoVO info;
	private Integer option;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public InfoVO getInfo() {
		return info;
	}
	public void setInfo(InfoVO info) {
		this.info = info;
	}
	public Integer getOption() {
		return option;
	}
	public void setOption(Integer option) {
		this.option = option;
	}
	
	@Override
	public String toString() {
		return "UserVO [id=" + id + ", userName=" + userName + ", password=" + password + ", info=" + info + ", option="
				+ option + "]";
	}
	
	
}

还建了个GenderType类:

package com.test.dozerspringtest.mode;

public enum GenderType {
	male,	//男   
	female	//女
}

 

还需建2个转换类:

EnumConverter类:

package com.test.dozerspringtest.util;

import org.dozer.CustomConverter;

import com.test.dozerspringtest.mode.GenderType;

public class EnumConverter implements CustomConverter {

	@Override
	public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass,	Class<?> sourceClass) {
		Object returnVale = null;
		if (sourceFieldValue != null) {
			if (sourceFieldValue instanceof Integer) {
				if ((Integer) sourceFieldValue == 0) {
					returnVale = GenderType.male;
				} else if ((Integer) sourceFieldValue == 1) {
					returnVale = GenderType.female;
				}
			} else if (sourceFieldValue instanceof Enum) {
				if (sourceFieldValue == GenderType.male) {
					returnVale = 0;
				} else if (sourceFieldValue == GenderType.female) {
					returnVale = 1;
				}
			}
		}
		return returnVale;
	}

}

SpecialConverter类:

package com.test.dozerspringtest.util;

import org.dozer.CustomConverter;

public class SpecialConverter implements CustomConverter{

	@Override
	public Object convert(Object existingDestinationFieldValue, Object sourceFieldValue, Class<?> destinationClass,	Class<?> sourceClass) {
		Object returnVale = null;
		if (sourceFieldValue != null) {
			if (sourceFieldValue instanceof Integer) {
				if ((Integer) sourceFieldValue == 0) {
					returnVale = "NO";
				} else if ((Integer) sourceFieldValue == 1) {
					returnVale = "OK";
				}
			} else if (sourceFieldValue instanceof String) {
				if (sourceFieldValue.equals("NO")) {
					returnVale = 0;
				} else if (sourceFieldValue.equals("OK")) {
					returnVale = 1;
				}
			}
		}
		return returnVale;
	}

}

 

第二部:

接下来就是配置文件了

spring引入的配置dozer-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">


	<!-- dozer-5.5.1的配置 -->
	<bean id="org.dozer.Mapper" class="org.dozer.DozerBeanMapper">
		<property name="mappingFiles">
			<list>
				<value>dozer/dozer-beanmapping.xml</value>
			</list>
			<!-- <list>
				<value>dozer-global-configuration.xml</value>
				<value>dozer-bean-mappings.xml</value>
				<value>more-dozer-bean-mappings.xml</value>
			</list> -->
		</property>
	</bean>
	<!-- dozer-5.4.0以前版本的配置  -->
	<!-- <bean id="dozerMapper" class="org.dozer.spring.DozerBeanMapperFactoryBean">
		<property name="mappingFiles">
			<list>
				<value>classpath:dozer/dozer-beanmapping.xml</value>
			</list>
		</property>
	</bean> -->
	
</beans>

 

在resource资源目录下建一个dozer目录,在该文件夹下新建dozer-beanmapping.xml

<?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>
		<stop-on-errors>true</stop-on-errors>
		<date-format>yyyy-MM-dd</date-format>
		<wildcard>true</wildcard>
		<custom-converters> 
			<converter type="com.test.dozerspringtest.util.EnumConverter">
				<class-a>java.lang.Enum</class-a>
				<class-b>java.lang.Integer</class-b>
			</converter>
		</custom-converters>
	  </configuration>

      <mapping date-format="yyyy-MM-dd">
      	<class-a>com.test.dozerspringtest.mode.User</class-a>
      	<class-b>com.test.dozerspringtest.mode.UserVO</class-b>
		<field>
			<a>name</a>
			<b>userName</b>
		</field>
      	<field>
			<a>info.createDate</a>
			<b>info.date</b>
		</field>
		<field custom-converter="com.test.dozerspringtest.util.EnumConverter">
			<a>info.gender</a>
			<b>info.gender</b>
		</field>
		<field custom-converter="com.test.dozerspringtest.util.SpecialConverter">
			<a>option</a>
			<b>option</b>
		</field>
      </mapping>
</mappings>

 

接着测试了

MainTest类:

package com.test.dozerspringtest.test;

import java.util.Date;

import org.dozer.Mapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.dozerspringtest.mode.GenderType;
import com.test.dozerspringtest.mode.Info;
import com.test.dozerspringtest.mode.User;
import com.test.dozerspringtest.mode.UserVO;

public class MainTest {

	public static void main(String[] args) {
		
		ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-dozer.xml");
		//Mapper mapper = (Mapper) ctx.getBean("dozerMapper");
		Mapper mapper = (Mapper) ctx.getBean("org.dozer.Mapper");
		Info info = new Info();
		info.setCreateDate(new Date());
		info.setGender(GenderType.female);
		info.setId(100);
		
		User user = new User();
		user.setId(100);
		user.setName("jasson");
		user.setPassword("password");
		user.setInfo(info);
		user.setOption("NO");

		UserVO uservo = mapper.map(user, UserVO.class);
		System.out.println(user.getId()+"<------>"+uservo.getId());
		System.out.println(user.getPassword()+"<------>"+uservo.getPassword());
		System.out.println(user.getName()+"<------>"+uservo.getUserName());
		System.out.println(user.getInfo().getId()+"<------>"+uservo.getInfo().getId());
		System.out.println(user.getInfo().getGender()+"<------>"+uservo.getInfo().getGender());
		System.out.println(user.getInfo().getCreateDate()+"<------>"+uservo.getInfo().getDate());
		System.out.println(user.getOption()+"<------>"+uservo.getOption());

	}

}

 

 

转载于:https://my.oschina.net/lenglingx/blog/870233

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值