博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaBean对象转换EntityUtils工具类
阅读量:4180 次
发布时间:2019-05-26

本文共 3473 字,大约阅读时间需要 11 分钟。

package com.example.util;import com.alibaba.fastjson.JSON;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.lang.ArrayUtils;import org.springframework.beans.BeanUtils;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * @author xiaobu * @version JDK1.8.0_171 * @date on  2018/11/16 11:06 * @description V1.0 javabean 对象转换工具类 */public class EntityUtils {    /**     * 数组集合转化为指定对象集合     * 指定的实体对象必须包含所以字段的构造方法,数组的元素的顺序将和构造方法顺序和类型一一对应     * @param list  集合     * @param clazz c     * @param 
类型 * @return List
* @description 用于jpa查询自定义vo用的 */ public static
List
castEntity(List
list, Class
clazz) { List
returnList = new ArrayList<>(); if (list.size() == 0) { return returnList; } Class[] c2 = null; Constructor[] constructors = clazz.getConstructors(); for (Constructor constructor : constructors) { Class[] tClass = constructor.getParameterTypes(); if (tClass.length == list.get(0).length) { c2 = tClass; break; } } //构造方法实例化对象 for (Object[] o : list) { Constructor
constructor = null; try { constructor = clazz.getConstructor(c2); } catch (NoSuchMethodException e) { e.printStackTrace(); } try { assert constructor != null; returnList.add(constructor.newInstance(o)); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } } return returnList; } /** * @author xiaobu * @date 2018/11/23 11:54 * @param object 要强转的对象 , entityClass 强转后的类型 * @return T * @descprition 对象类型强转 * @version 1.0 */ public static
T convertBean(Object object, Class
entityClass) { if(null == object) { return null; } return JSON.parseObject(JSON.toJSONString(object), entityClass); } /** * @author xiaobu * @date 2018/11/23 11:57 * @param object 要转话的对象 * @return java.util.Map
* @descprition 对象转为map * @version 1.0 */ public static Map
objectToMap(Object object){ return convertBean(object, Map.class); } /** * @author xiaobu * @date 2018/11/23 12:00 * @param map map集合, t 对象 * @return T * @descprition map转换对象 * @version 1.0 */ public static
T mapToObject(Map
map, Class
t) throws InstantiationException, IllegalAccessException, InvocationTargetException { T instance = t.newInstance(); org.apache.commons.beanutils.BeanUtils.populate(instance, map); return instance; } /** * @author xiaobu * @date 2018/11/23 12:30 * @param source 资源对象, target 目标对象, ignoreProperties 赋值new String[]{} * @return T target对象 * @descprition 对象转换 * @version 1.0 */ public static
T copy(Object source, Class
target, String...ignoreProperties){ T targetInstance = null; try { targetInstance = target.newInstance(); } catch (Exception e) { e.printStackTrace(); } if(ArrayUtils.isEmpty(ignoreProperties)) { assert targetInstance != null; BeanUtils.copyProperties(source, targetInstance); }else { assert targetInstance != null; BeanUtils.copyProperties(source, targetInstance, ignoreProperties); } return targetInstance; } /** * @author xiaobu * @date 2018/11/23 12:32 * @param list, target, ignoreProperties] * @return java.util.List
* @descprition 对象list转换 * @version 1.0 */ public static
List
copyList(List
list, Class
target, String...ignoreProperties){ List
targetList = new ArrayList<>(); if(CollectionUtils.isEmpty(list)) { return targetList; } for(E e : list) { targetList.add(copy(e, target, ignoreProperties)); } return targetList; }}

 

转载地址:http://jygai.baihongyu.com/

你可能感兴趣的文章
[C++11]半同步半异步线程池实现与分析
查看>>
Redis网络库源码浅解
查看>>
TCP半连接与全连接队列及accept建立连接
查看>>
TCP连接的关闭
查看>>
系统级 I/O与缓冲机制
查看>>
[Web Server](一)Tiny Web Server分析
查看>>
内存管理之用户空间
查看>>
FastCGI 协议分析与C语言实现实例
查看>>
Muduo网络库源码分析之定时器的实现
查看>>
C++智能指针的分析与使用
查看>>
Muduo网络库源码分析之Acceptor和TcpServer
查看>>
Muduo网络库源码分析之TcpConnection Class
查看>>
编写网络服务程序的常用编程模型
查看>>
复合&继承关系下的构造和析构
查看>>
Linux交换空间(swap space)
查看>>
Redis 通信协议(protocol)
查看>>
Redis 客户端 Hiredis 简介
查看>>
Linux 系统 CPU 使用率简单分析
查看>>
make 出现 OOM???
查看>>
openstack ice版创建实例流程整理(包括wsgi模块间调用解析)
查看>>