BeanCopier 浅复制工具类
来源:互联网 发布:linux history删除指定 编辑:程序博客网 时间:2024/05/16 10:33
package com.bestpay.messagecenter.oss.service;/** * Created by lxn on 2016/11/2. */import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;import lombok.extern.slf4j.Slf4j;import net.sf.cglib.beans.BeanCopier;import com.bestpay.messagecenter.oss.dal.model.TSysRole;import com.bestpay.messagecenter.oss.dal.model.TSysUser;import com.bestpay.messagecenter.oss.service.model.dataEntity.UserVo;import com.github.miemiedev.mybatis.paginator.domain.PageList;/** * VoPo 转换工具(浅复制) * @author lxn * @version Id: VoPoUtil.java, v 0.1 2016/11/2 14:41 lxn Exp $$ */@Slf4jpublic class PojoConvertUtil { private static Lock initLock =new ReentrantLock(); private static Map<String,BeanCopier> beanCopierMap =new HashMap<String,BeanCopier>(); /** * 初始化 BeanCopier * @param source * @param target * @return */ private static BeanCopier initCopier(Class source,Class target){ initLock.lock(); BeanCopier find = beanCopierMap.get(source.getName()+"_"+target.getName()); if(find!=null){ initLock.unlock(); return find; } BeanCopier beanCopier = BeanCopier.create(source,target,false); beanCopierMap.put(source.getName()+"_"+target.getName(),beanCopier); initLock.unlock(); return beanCopier; } /** * 获取BeanCopier * @param source * @param target * @return */ private static BeanCopier getBeanCopier(Class source,Class target){ BeanCopier beanCopier = beanCopierMap.get(source.getClass().getName()+"_"+target.getName()); if(beanCopier!=null){ return beanCopier; } return initCopier(source,target); } /** * Pojo 类型转换(浅复制,字段名&类型相同则被复制) * @param source * @param targetClass * @param <T> * @return */ public static <T> T convert(Object source, Class<T> targetClass){ if(source==null){ return null; } BeanCopier beanCopier = getBeanCopier(source.getClass(),targetClass); try { T target = targetClass.newInstance(); beanCopier.copy(source,target,null); return target; }catch (Exception e){ log.error("对象拷贝失败,{}",e); throw new RuntimeException("对象拷贝失败"+source+"_"+targetClass); } } /** * Pojo 类型转换(浅复制,字段名&类型相同则被复制) * @param source * @param targetClass * @param <E> * @return */ public static <E> List<E> convert(List source, Class<E> targetClass){ if(source==null){ return null; } try { if(source.isEmpty()){ return source.getClass().newInstance(); } List result = source.getClass().newInstance(); for(Object each: source){ result.add(convert(each,targetClass)); } return result; }catch (Exception e){ log.error("对象拷贝失败,{}",e); throw new RuntimeException("对象拷贝失败"+source+"_"+targetClass); } } /** * Pojo 类型转换(浅复制,字段名&类型相同则被复制) * @param source * @param targetClass * @param <T> * @return */ public static <T> PageList<T> convert(PageList source,Class<T> targetClass){ if(source==null){ return null; } List<T> list = convert((List)source,targetClass); PageList<T> result = new PageList<>(source.getPaginator()); result.addAll(list); return result; } public static void main(String[] args) { TSysRole tSysRole =new TSysRole(); tSysRole.setRoleDesc("12346"); tSysRole.setRoleName("adcasdasd"); tSysRole.setRoleId(187);//// RoleVo result = PojoConvertUtil.convert(tSysRole, RoleVo.class);// List<TSysRole> org = new ArrayList<>();// org.add(tSysRole); TSysUser tSysUser =new TSysUser(); tSysUser.setRole(tSysRole); UserVo tar = PojoConvertUtil.convert(tSysUser,UserVo.class); System.out.println(tar); }}
0 0
- BeanCopier 浅复制工具类
- 工具类BeanMap,BeanCopier
- 使用 BeanCopier 复制对象
- Spring BeanCopier深度复制
- BeanCopier对象复制学习
- java bean 属性复制 --BeanCopier
- java bean 属性复制 --BeanCopier
- BeanCopier
- beans (相关操作类)--- BeanCopier
- Bean属性复制:Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier
- Bean复制(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier)
- 使用Cglib的BeanCopier实现Bean的复制
- 复制粘贴 工具类
- 对象拷贝类PropertyUtils,BeanUtils,BeanCopier
- java 文件复制 文件夹复制工具类
- java复制文件工具类
- java复制目录工具类
- Java复制文件工具类
- java中关于时间的用法示例
- 数据结构与算法-实验5-自动产生随机数,并实现对数的排序
- windows安装mycat
- 扇形百分比控件
- 通过 de Casteljau 算法绘制贝塞尔曲线,并计算它的切线,实现 1-7 阶贝塞尔曲线的形成动画。
- BeanCopier 浅复制工具类
- http与https区别
- Android 项目基础架构。包含架构分层、基本工具层等
- 图解Github的入门教程
- Java中的单例模式
- Hive和YDB的sql语句
- Ubuntu 16.04使用python3.x相关
- iOS开发中正则表达式的基础使用
- #382 – 将RichTextBox的内容保存为XAML文件(Persisting RichTextBox Contents as XAML)