在业务逻辑很复杂的时候,一般都是牵涉到很广,这最直白的表现就是牵连诸多表,然后数据却不是一个对象中的属性或字段,这个时候我们为了方便数据传输一般都会将多个对象中的属性封装到一个VO中,使用Hibernate的人应该知道,查询出来一般都是一个或多个对象,如果依次通过setter方法来赋值的话,效率太低!这时候我们的DozerBeanMapper就体现出来了价值,所以我便将其封装了起来!好啦,直接上代码:
- /**
- * @Title: EntityObjectConverter.java
- * @Package com.joyce.util
- * @Copyright: Copyright (c) 2013
- *
- * @author Comsys-LZP
- * @date 2013-11-4 上午09:55:14
- * @version V2.0
- */
- package com.joyce.util;
- import java.util.ArrayList;
- import java.util.List;
- import net.sf.dozer.util.mapping.DozerBeanMapper;
- /**
- * @Description: 两个对象间,相同属性名之间进行转换
- *
- * @ClassName: EntityObjectConverter
- * @Copyright: Copyright (c) 2013
- *
- * @author Comsys-LZP
- * @date 2013-11-4 上午09:55:14
- * @version V2.0
- */
- public class EntityObjectConverter {
- /*
- * 实例化对象
- */
- private static DozerBeanMapper map = new DozerBeanMapper();
- /**
- * @Description: 将目标对象转换为指定对象,相同属性名进行属性值复制
- *
- * @Title: EntityObjectConverter.java
- * @Copyright: Copyright (c) 2013
- *
- * @author Comsys-LZP
- * @date 2013-11-4 下午02:32:34
- * @version V2.0
- */
- @SuppressWarnings("unchecked")
- public static <T> T getObject(Object source,Class<T> cls){
- if (source==null) {
- return null;
- }
- return (T) map.map(source, cls);
- }
- /**
- * @Description: 两个对象之间相同属性名的属性值复制
- *
- * @Title: EntityObjectConverter.java
- * @Copyright: Copyright (c) 2013
- *
- * @author Comsys-LZP
- * @date 2013-11-4 下午02:33:56
- * @version V2.0
- */
- public static void setObject(Object source,Object target){
- map.map(source, target);
- }
- /**
- * @Description: 对象集合中对象相同属性名的属性值复制
- *
- * @Title: EntityObjectConverter.java
- *
- * @Copyright: Copyright (c) 2013
- * @author Comsys-LZP
- * @date 2013-11-4 下午02:34:26
- * @version V2.0
- */
- @SuppressWarnings("unchecked")
- public static List getList(List source,Class cls){
- List listTarget = new ArrayList();
- if(source != null){
- for (Object object : source) {
- Object objTarget = EntityObjectConverter.getObject(object, cls);
- listTarget.add(objTarget);
- }
- }
- return listTarget;
- }
- }