Dozer BeanMapper 對象轉換


dozer是什么?

在開發過程中,常常會涉及到對象之間的轉換,bean到dto到vo等等,dozer便是很好的一個對象轉換的組件。它可以將一個對象遞歸拷貝到另外一個對象。既支持簡單的對象映射,也支持復雜的對象映射。

對象映射

dozer支持兩種映射方式,調用api的簡單映射方式和使用xml的映射方式。api調用的方式約束我們定義的兩個bean中的成員變量名要一樣,方便自動映射,至於類型可以不一樣,比如類A的成員變量 Integer num 和類B的 String num 是可以直接映射的。xml的方式是通過編寫xml文件來定義映射規則。

dozer使用

使用dozer時,只需要加上dozer的依賴即可,下面以maven為例(版本號可以根據最新的做修改):

        <dependency>
            <groupId>com.github.dozermapper</groupId>
            <artifactId>dozer-core</artifactId>
            <version>6.2.0</version>
        </dependency>

  

如下是以簡單映射方式封裝的uitl:

 

package com.dragonsoft.slxf.config;

import org.dozer.DozerBeanMapperBuilder;
import org.dozer.Mapper;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

/**
 * dozer 轉換器
 * @author liyz
 */
@Component
public class GeneralConvertor {

    //持有Dozer單例, 避免重復創建DozerMapper消耗資源.
    public static final Mapper mapper = DozerBeanMapperBuilder.buildDefault();

    /**
     * List  實體類 轉換器
     *
     * @param source 原數據
     * @param clz    轉換類型
     * @param <T>
     * @param <S>
     * @return
     */
    public <T, S> List<T> convertor(List<S> source, Class<T> clz) {
        if (source == null) return null;
        List<T> map = new ArrayList<>();
        for (S s : source) {
            map.add(mapper.map(s, clz));
        }
        return map;
    }

    /**
     * Set 實體類 深度轉換器
     *
     * @param source 原數據
     * @param clz    目標對象
     * @param <T>
     * @param <S>
     * @return
     */
    public <T, S> Set<T> convertor(Set<S> source, Class<T> clz) {
        if (source == null) return null;
        Set<T> set = new TreeSet<>();
        for (S s : source) {
            set.add(mapper.map(s, clz));
        }
        return set;
    }

    /**
     * 實體類 深度轉換器
     *
     * @param source
     * @param clz
     * @param <T>
     * @param <S>
     * @return
     */
    public <T, S> T convertor(S source, Class<T> clz) {
        if (source == null) return null;
        return mapper.map(source, clz);
    }

    public void convertor(Object source, Object object) {
        mapper.map(source, object);
    }

    public <T> void copyConvertor(T source, Object object) {
        mapper.map(source, object);
    }


}

 

 
       


免責聲明!

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



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