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/

猜你喜欢

转载自www.cnblogs.com/liyh123456/p/10442764.html