java開發工具類之Dozer的使用


在我們編碼的過程中少不了的是javaBean的映射,如果字段較少的話還好,一旦字段較多就比較麻煩了,這時Dozer就派上用場了!!

1.1 什么是dozer?

  Dozer 是一個對象轉換工具。

  Dozer可以在JavaBean到JavaBean之間進行遞歸數據復制,並且這些JavaBean可以是不同的復雜的類型。

  所有的mapping,Dozer將會很直接的將名稱相同的fields進行復制,如果field名不同,或者有特別的對應要求,則可以在xml中進行定義。

1.2 為什么要使用Dozer?

  分析多層架構的J2EE系統,經常存在JavaBean直接的拷貝。

  比如我們在DAO層,通過Do取得業務層需要的數據,將這些數據傳遞給Service層的VO。

  Do與VO就存在典型的值拷貝。

  典型的解決方案就是手動拷貝,代碼中充斥大量Set 和Get方法,真正的業務被埋藏值與值的拷貝之中。

  另一種方案就是使用BeanUtil,但BeanUtil不夠很好的靈活性,又時候還不得不手動拷貝。

  Dozer可以靈活的對對象進行轉換,且使用簡單。

1.3 如何得到Dozer工具類jar包

  1.點擊下載:http://sourceforge.net/projects/dozer/files/

  2.如果使用maven工具的話,在pom.Xml文件中加入:

    <dependency>

        <groupId>net.sf.dozer</groupId>

        <artifactId>dozer</artifactId>

        <version>5.2.1</version>

   </dependency>

  加入你的構建路徑既可以使用。

示例:

//這是工具類
package
dozer; import java.util.ArrayList; import java.util.List; import org.dozer.DozerBeanMapper; import org.dozer.Mapper; /** * * @Title: DozerUtil.java * @Package * @Description: 將一個對象的屬性復制到另一個對象或者list中 * @author licy * @date 2018年11月8日 * @version V1.0 */ public class DozerUtil { private static Mapper mapper = new DozerBeanMapper(); public static <T> List<T> transforList(List<?> sources, Class<T> clazz) { List<T> list = new ArrayList<>(); if (sources == null) { return list; } for (Object o : sources) { T t = transfor(o, clazz); list.add(t); } return list; } public static void transfor(Object source, Object target) { if (source == null || target == null) { return; } mapper.map(source, target); } public static <T> T transfor(Object source, Class<T> target) { if (source == null) { return null; } return mapper.map(source, target); } }

測試實體類:

package dozer;
 
 /** 
  * @Title: DozerBean.java
  * @Package dozer
  * @Description: TODO(用一句話描述該文件做什么)
  * @author licy
  * @date 2018年11月9日
  * @version V1.0 
  */
 
public class DozerBean {
    private int id;
    private String name;
    private int age;
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public DozerBean() {
        super();
        // TODO Auto-generated constructor stub
    }
    @Override
    public String toString() {
        return "DozerBean [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
    public DozerBean(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
}

測試代碼:

package dozer;
 
public class TestDozerUtil {
    public static void main(String[] args) {
        DozerBean dBean1 = new DozerBean(1,"a",1);
        DozerBean dBean2 = DozerUtil.transfor(dBean1, DozerBean.class);
        System.out.println(dBean2.toString());
    }
}

這里只是簡單一個小例子,快速熟悉Dozer的使用,詳細了解請看:http://dozer.sourceforge.net/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM