package com.thinkgem.jeesite.common.mapper;

import java.util.Collection;
import java.util.List;

import org.dozer.DozerBeanMapper;

import com.google.common.collect.Lists;


/**
 * 简单封装Dozer, 实现深度转换Bean<->Bean的Mapper.实现:
 *  
 * 1. 持有Mapper的单例. 
 * 2. 返回值类型转换.
 * 3. 批量转换Collection中的所有对象.
 * 4. 区分创建新的B对象与将对象A值复制到已存在的B对象两种函数.
 * 
 * @author calvin
 */
public class BeanMapper {

	/**
	 * 持有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中对象的类型.
	 */
	@SuppressWarnings("rawtypes")
	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);
	}

	
}
最近下载更多
cytttt  LV2 6月7日
sjwc88  LV4 5月1日
heng356  LV1 2月11日
zshldehao1  LV2 2月5日
zwjxxyxqf  LV1 2024年11月1日
colecole  LV3 2024年10月8日
HTML-WEB  LV1 2024年5月22日
educationAAA  LV11 2024年5月3日
2860615178  LV4 2024年5月1日
managment  LV3 2024年4月17日
最近浏览更多
ningrong 前天
暂无贡献等级
暂无贡献等级
cytttt  LV2 6月7日
18348033376 5月29日
暂无贡献等级
小自立 5月17日
暂无贡献等级
暂无贡献等级
missliu  LV8 4月14日
哪里的完整版  LV8 4月1日
GakkiMarryMe  LV9 3月25日
akittyboy  LV9 2月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友