JAVA编码(43)—— Java对象之前的相互转换(重要)

1、相同类的互转(属性相同)

2、Map转为POJO对象

package com.sinosoft.common;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 快速的 domain 转换为DTO,
 * 将所有Enity 中和DTO中相同属性的值进行转换。
 */
public class EntityAndDTO {
    /**
     * 泛型的转换接口需要传入需要被转换的对象和转换后的对象的Class
     *
     * @param t
     * @param eClass
     * @param <E>
     * @param <T>
     * @return E
     */
    public static <E, T> E convert(T t, Class<E> eClass) {
        E e = null;
        try {
            e = eClass.newInstance();
            BeanUtils.copyProperties(t, e);

        } catch (InstantiationException e1) {
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        }
        return e;
    }

    public static <E, T> List<E> convert(List<T> tList, Class<E> eClass) {

        List<E> eList = new ArrayList<E>();
        for (T t : tList) {
            eList.add(convert(t, eClass));
        }
        return eList;
    }

    /**
     * 将map结果集转换为POJO对象
     * @param tList source
     * @param eClass class
     * @param <E> e
     * @param <T> t
     * @return t
     */
    public static <E, T> List<E> mapConvertToBean(List<T> tList, Class<E> eClass) {
        List<E> eList = new ArrayList<E>();
        try {
            for (T t : tList) {
                Map<String, Object> map = (Map<String, Object>) t;
                eList.add((E) mapConvertToObject(map, eClass));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return eList;
    }

    /**
     * 将map转换为POJO对象
     * @param map map
     * @param beanClass class
     * @return r
     */
    public static Object mapConvertToObject(Map<String, Object> map, Class beanClass) {
        ObjectMapper mapper = new ObjectMapper();
        Object pojo = mapper.convertValue(map, beanClass);
        return pojo;
    }

}

 当然通过Gson也是可以的

Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(map);
MyPojo pojo = gson.fromJson(jsonElement, MyPojo.class);

 

posted @ 2017-04-12 20:37  xu_shuyi  阅读(134)  评论(0)    收藏  举报