当前位置: 首页 > 工具软件 > Dozer > 使用案例 >

dozer使用教程

乐正浩博
2023-12-01

1.什么是dozer
Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。

Dozer支持简单属性映射,复杂类型映射,双向映射,隐式显式映射以及递归映射。这包括映射还需要在元素级别进行映射的集合属性。
注意:dozer 目前不支持集合之间的转换 ,需要自己进行处理,稍后我会提供一个简单的工具类.

目前dozer官网最新的班委5.4.1 2014年4月发布 至今一直未曾更新!!

2.快速入门
2.1导入依赖

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

2.2以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">
          <!-- 如果两个bean的field名称和类型都一样,则不需要指明映射 -->
  <mapping> 
    <class-a>org.dozer.vo.TestObject</class-a>
    <class-b>org.dozer.vo.TestObjectPrime</class-b>   
    <field>
      <a>one</a>
      <b>onePrime</b>
    </field>
  </mapping>  

  <mapping wildcard="false"> 
    <class-a>org.dozer.vo.TestObjectFoo</class-a>
    <class-b>org.dozer.vo.TestObjectFooPrime</class-b>   
      <field>
        <a>oneFoo</a>
        <b>oneFooPrime</b>
      </field>
  </mapping>  

</mappings> 

从版本5.5.0开始,Spring集成了额外的模块dozer-spring。将DozerBeanMapperFactoryBean添加到Spring配置文件中。您可以在mappingFiles属性中指定您创建的任何自定义数据库映射文件。如果您没有任何自定义映射,则此列表可以为空。也可以设置自定义事件侦听器和bean工厂。请注意,此Factory Bean支持Spring Resources

  <bean class="org.dozer.spring.DozerBeanMapperFactoryBean">
        <property name="mappingFiles" 
                  value="classpath*:/*mapping.xml"/>
        <property name="customConverters">
            <list>
                <bean class=
                      "org.dozer.converters.CustomConverter"/>      
            </list>
        </property>
        <property name="eventListeners">
            <list>
                <bean class="org.dozer.listeners.EventListener"/>
            </list>
        </property>
        <property name="factories">
            <map>
                <entry key="id" value-ref="bean-factory-ref"/>
            </map>
        </property>
    </bean>
            

2.3简单的工具类

/**
 * @author :dongshuo
 * @date : 2019/2/11 17:36
 * @desc :
 */
public class DozerUtil {
    private DozerUtil() {
    }

    /**
     * 持有Dozer单例, 避免重复创建DozerMapper消耗资源.
     */
    private static DozerBeanMapper dozer = new DozerBeanMapper();


    /**
     * 基于Dozer转换对象的类型.
     */
    public static <T> T map(Object source, Class<T> destinationClass) {
        return dozer.map(source, destinationClass);
    }


    /**
     * 基于Dozer转换Collection中对象的类型.
     */
    public static <T> List<T> mapList(Collection<?> sourceList, Class<T> destinationClass) {
        List<T> destinationList = Lists.newArrayList();
        for (Object sourceObject : sourceList) {
            T destinationObject = dozer.map(sourceObject, destinationClass);
            destinationList.add(destinationObject);
        }
        return destinationList;
    }


    /**
     * 基于Dozer将对象A的值拷贝到对象B中.
     */
    public static void copy(Object source, Object destinationObject) {
        dozer.map(source, destinationObject);
    }
}

参考:https://www.cnblogs.com/ynyhl/p/9274296.html
http://dozer.sourceforge.net/documentation/springintegration.html

 类似资料: