org.dozer浅析

本文出自:http://blog.csdn.net/hongchangfirst 

dozer是一种JavaBean的映射工具,类似于apache的BeanUtils。但是dozer更强大,它可以灵活的处理复杂类型之间的映射。不但可以进行简单的属性映射、复杂的类型映射、双向映射、递归映射等,并且可以通过XML配置文件进行灵活的配置。 


大体来说它可以把一个对象转化为另一个对象,这两个对象之间会有一定的映射规则。

如你有两个类,

class ForeignName

{

private String firstName;

private String lastName;

}


class ChineseName

{

private String firstName;

private String lastName;

}

比如一个中文名字“Hongchang Zhang”,在ForeignName中

firstName="Hongchang";

lastName="Zhang";

但在中国我们的firstName应该是姓,也就是说firstName="Zhang",我们可以采用dozer的map规则进行映射,把ForeignName中的firstName映射为ChineseName的lastName。下述为nameMapper.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">  
         
       <mapping>  
        <class-a>ForeignName</class-a>  
        <class-b>ChineseName</class-b>  
        <field>  
            <a>firstName</a>  
            <b>lastName</b>  
        </field>  
        <field>  
            <a>lastName</a>  
            <b>firstName</b>  
        </field>  
       </mapping>  
 </mappings>  

上边的映射很容易看明白,接下来我们看看具体怎么映射:

ForeignName hc_z = new ForeignName();  
hc_z.firstName="Hongchang";

hc_z.lastName="Zhang";

DozerBeanMapper mapper = new DozerBeanMapper();  
List<String> mappers = new ArrayList<String>();  
mappers.add("nameMapper.xml");  
mapper.setMappingFiles(mappers);  
ChineseName z_hc = new ChineseName();  
mapper.map(hc_z, z_hc);  
System.out.println(z_hc.firstName+ " " + z_hc.lastName);  


可以看到,很自然的我们得到了"Zhang Hongchang",当然我们要包含以下包:

import java.util.ArrayList;  
import java.util.List;  
  
import org.apache.commons.logging.Log;  
import org.apache.commons.logging.LogFactory;  
import org.dozer.DozerBeanMapper;

有人可能会说 了,为什么要这么麻烦呢?当然这个例子可能有点杀鸡用牛刀了,但是它的好处在于自动化映射,而不是你程序自己去映射。

你可能感兴趣的:(apache,String,Class,import,工具,encoding)