|
@ -0,0 +1,259 @@
|
|
|
package com.yihu.jw.patient.util;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import org.apache.commons.beanutils.BeanUtils;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.beans.BeanInfo;
|
|
|
import java.beans.IntrospectionException;
|
|
|
import java.beans.Introspector;
|
|
|
import java.beans.PropertyDescriptor;
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.lang.reflect.Method;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author litaohong on 2018/9/10
|
|
|
* @project jw2.0
|
|
|
*/
|
|
|
public class JavaBeanUtils {
|
|
|
|
|
|
private static JavaBeanUtils javaBeanUtils = null;
|
|
|
|
|
|
private JavaBeanUtils(){}
|
|
|
|
|
|
public static JavaBeanUtils getInstance(){
|
|
|
if (javaBeanUtils == null) {
|
|
|
synchronized (JavaBeanUtils.class) {
|
|
|
if (javaBeanUtils == null) {
|
|
|
javaBeanUtils = new JavaBeanUtils();
|
|
|
}
|
|
|
if (objectMapper == null) {
|
|
|
objectMapper = new ObjectMapper();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return javaBeanUtils;
|
|
|
}
|
|
|
|
|
|
private static ObjectMapper objectMapper = null;
|
|
|
/**
|
|
|
* 将一个 Map 对象转化为一个 JavaBean
|
|
|
*
|
|
|
* @param type
|
|
|
* 要转化的类型
|
|
|
* @param map
|
|
|
* 包含属性值的 map
|
|
|
* @return 转化出来的 JavaBean 对象
|
|
|
* @throws IntrospectionException
|
|
|
* 如果分析类属性失败
|
|
|
* @throws IllegalAccessException
|
|
|
* 如果实例化 JavaBean 失败
|
|
|
* @throws InstantiationException
|
|
|
* 如果实例化 JavaBean 失败
|
|
|
* @throws InvocationTargetException
|
|
|
* 如果调用属性的 setter 方法失败
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public Object map2Bean(Class type, Map map)
|
|
|
throws IntrospectionException, IllegalAccessException,
|
|
|
InstantiationException, InvocationTargetException {
|
|
|
Object obj = type.newInstance(); // 创建 JavaBean 对象
|
|
|
BeanUtils.populate(obj, map);
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将一个 JavaBean 对象转化为一个 Map
|
|
|
*
|
|
|
* @param bean
|
|
|
* 要转化的JavaBean 对象
|
|
|
* @return 转化出来的 Map 对象
|
|
|
* @throws IntrospectionException
|
|
|
* 如果分析类属性失败
|
|
|
* @throws IllegalAccessException
|
|
|
* 如果实例化 JavaBean 失败
|
|
|
* @throws InvocationTargetException
|
|
|
* 如果调用属性的 setter 方法失败
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public Map bean2Map(Object bean) throws IntrospectionException,
|
|
|
IllegalAccessException, InvocationTargetException {
|
|
|
Class type = bean.getClass();
|
|
|
Map returnMap = new HashMap();
|
|
|
BeanInfo beanInfo = Introspector.getBeanInfo(type);
|
|
|
|
|
|
PropertyDescriptor[] propertyDescriptors = beanInfo
|
|
|
.getPropertyDescriptors();
|
|
|
for (int i = 0; i < propertyDescriptors.length; i++) {
|
|
|
PropertyDescriptor descriptor = propertyDescriptors[i];
|
|
|
String propertyName = descriptor.getName();
|
|
|
if (!propertyName.equals("class")) {
|
|
|
Method readMethod = descriptor.getReadMethod();
|
|
|
Object result = readMethod.invoke(bean, new Object[0]);
|
|
|
if (result != null) {
|
|
|
returnMap.put(propertyName, result);
|
|
|
} else {
|
|
|
returnMap.put(propertyName, "");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return returnMap;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将对象集合转为集合map
|
|
|
*
|
|
|
* @describe:TODO
|
|
|
* @param beans
|
|
|
* @return
|
|
|
* @throws IllegalAccessException
|
|
|
* @throws InvocationTargetException
|
|
|
* @throws IntrospectionException
|
|
|
* @time:2014年9月3日上午10:37:32
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public List<Map> beans2Maps(List<Object> beans)
|
|
|
throws IllegalAccessException, InvocationTargetException,
|
|
|
IntrospectionException {
|
|
|
List<Map> maps = new ArrayList<Map>();
|
|
|
for (Iterator iterator = beans.iterator(); iterator.hasNext();) {
|
|
|
Object bean = (Object) iterator.next();
|
|
|
maps.add(bean2Map(bean));
|
|
|
}
|
|
|
return maps;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将对多个Map转对对象集合返回
|
|
|
*
|
|
|
* @describe:TODO
|
|
|
* @param type
|
|
|
* @param maps
|
|
|
* @return
|
|
|
* @throws IntrospectionException
|
|
|
* @throws IllegalAccessException
|
|
|
* @throws InstantiationException
|
|
|
* @throws InvocationTargetException
|
|
|
* @time:2014年9月3日上午10:40:00
|
|
|
*/
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public List<Object> mapstoBeans(Class type, List<Map> maps)
|
|
|
throws IntrospectionException, IllegalAccessException,
|
|
|
InstantiationException, InvocationTargetException {
|
|
|
List<Object> beans = new ArrayList<Object>();
|
|
|
for (Map map : maps) {
|
|
|
beans.add(map2Bean(type, map));
|
|
|
}
|
|
|
return beans;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 对象复制
|
|
|
*
|
|
|
* @describe:TODO
|
|
|
* @param toBean
|
|
|
* 目标对象
|
|
|
* @param fromBean
|
|
|
* 对象来源
|
|
|
* @return
|
|
|
* @throws IllegalAccessException
|
|
|
* @throws InvocationTargetException
|
|
|
* @time:2014年9月3日上午11:47:45
|
|
|
*/
|
|
|
public Object copyProperties(Object toBean, Object fromBean)
|
|
|
throws IllegalAccessException, InvocationTargetException {
|
|
|
if (fromBean == null) {
|
|
|
return null;
|
|
|
}
|
|
|
org.springframework.beans.BeanUtils.copyProperties(toBean, fromBean);
|
|
|
return toBean;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 对象复制(将给定的对象转化为给定的Class 类型对象并返回)
|
|
|
*
|
|
|
* @describe:TODO
|
|
|
* @param toClassBean
|
|
|
* @param fromBean
|
|
|
* @return
|
|
|
* @throws IllegalAccessException
|
|
|
* @throws InvocationTargetException
|
|
|
* @throws InstantiationException
|
|
|
* @throws ClassNotFoundException
|
|
|
* @time:2014年9月3日下午12:05:23
|
|
|
*/
|
|
|
public Object copyProperties(Class toClassBean, Object fromBean)
|
|
|
throws IllegalAccessException, InvocationTargetException,
|
|
|
InstantiationException, ClassNotFoundException {
|
|
|
if (fromBean == null) {
|
|
|
return null;
|
|
|
}
|
|
|
Object toBean = Class.forName(toClassBean.getCanonicalName())
|
|
|
.newInstance();
|
|
|
return copyProperties(toBean, fromBean);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 将给定的对象集合转换为指定的类对象集合
|
|
|
*
|
|
|
* @describe:TODO
|
|
|
* @param toClassBean
|
|
|
* 类 类型
|
|
|
* @param beans
|
|
|
* 对象集合
|
|
|
* @return
|
|
|
* @throws IllegalAccessException
|
|
|
* @throws InvocationTargetException
|
|
|
* @throws InstantiationException
|
|
|
* @throws ClassNotFoundException
|
|
|
* @time:2014年9月3日下午12:33:24
|
|
|
*/
|
|
|
public List copyProperties(Class toClassBean, List beans)
|
|
|
throws IllegalAccessException, InvocationTargetException,
|
|
|
InstantiationException, ClassNotFoundException {
|
|
|
List list = new ArrayList();
|
|
|
for (Iterator iterator = beans.iterator(); iterator.hasNext();) {
|
|
|
Object object = (Object) iterator.next();
|
|
|
list.add(copyProperties(toClassBean, object));
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* map转为json
|
|
|
* @return
|
|
|
*/
|
|
|
public String mapJson(Map<String, Object> map) throws Exception {
|
|
|
if (CollectionUtils.isEmpty(map)) {
|
|
|
return "paramter is null";
|
|
|
}
|
|
|
List<Map<String, Object>> result = new ArrayList<>();
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
JSONObject jsonObject = JSONObject.parseObject(objectMapper.writeValueAsString(map));
|
|
|
return jsonArray.toJSONString();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* map转为json
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray mapListJson(Collection mapList) throws Exception {
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
if (CollectionUtils.isEmpty(mapList)) {
|
|
|
return jsonArray;
|
|
|
}
|
|
|
for(Object map : mapList){
|
|
|
JSONObject jsonObject = JSONObject.parseObject(objectMapper.writeValueAsString(map));
|
|
|
jsonArray.add(jsonObject);
|
|
|
}
|
|
|
return jsonArray;
|
|
|
}
|
|
|
}
|