Java-实体与集合转换
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.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* 用于对javabean和map之间的相互装换的工具类
*/
public class BeanMapConvertUtils { /**
* 将Map转为javaBean
*/
public static <T> T mapToObject(Map<String, Object> map, Class<T> beanClass) {
if (map == null)
return null;
T obj = null;
BeanInfo beanInfo = null;
try {
obj = beanClass.newInstance();
beanInfo = Introspector.getBeanInfo(obj.getClass());
} catch (IntrospectionException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
return null; // 如果在创建实例和获取beaninfo出现异常则直接返回null
}
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
Method setter = property.getWriteMethod();
if (setter != null) {
String key = property.getName();
try {
setter.invoke(obj, map.get(key));
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
}
}
}
return obj;
} /**
* @Description: 将Map转为javaBean
* @param map 要转换的map对象
* @param beanClass 需要转成的javabean的class
* @param requiredPropertys 需要转换后包含的属性名集合
*/
public static <T> T mapToObject(Map<String, Object> map, Class<T> beanClass, Collection<String> requiredPropertys) {
if (map == null)
return null;
T obj = null;
BeanInfo beanInfo = null;
try {
obj = beanClass.newInstance();
beanInfo = Introspector.getBeanInfo(obj.getClass());
} catch (IntrospectionException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
return null; // 如果在创建实例和获取beaninfo出现异常则直接返回null
}
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
Method setter = property.getWriteMethod();
if (setter != null) {
String key = property.getName();
if (requiredPropertys != null && !requiredPropertys.contains(key)) {// 如果不包含需要的属性则跳过
continue;
}
try {
setter.invoke(obj, map.get(key));
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
}
}
}
return obj;
} /**
* 将javabean集合转为map集合
* @param objList avabean集合
* @param requiredPropertys 需要转换后包含的属性名集合
*/
public static List<Map<String, Object>> objectsToMaps(Collection<?> objList, Collection<String> requiredPropertys) {
List<Map<String, Object>> arrayList = new ArrayList<Map<String, Object>>();
if (objList != null) {
for (Object obj : objList) {
Map<String, Object> objectToMap = objectToMap(obj, requiredPropertys);
if (objectToMap != null) {
arrayList.add(objectToMap);
}
}
}
return arrayList;
} /**
* 将javaBean转为Map
*/
public static Map<String, Object> objectToMap(Object obj) {
if (obj == null)
return null;
Map<String, Object> map = new HashMap<String, Object>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {
continue;
}
Method getter = property.getReadMethod();
Object value = getter != null ? getter.invoke(obj) : null;
map.put(key, value);
}
} catch (Exception e) {
map = null;
e.printStackTrace();
}
return map;
} /**
* 将Map转为javaBean
* @param obj 要转换的javabean对象
* @param requiredPropertys 需要转换后包含的属性名集合
*/
public static Map<String, Object> objectToMap(Object obj, Collection<String> requiredPropertys) {
if (obj == null)
return null;
Map<String, Object> map = new HashMap<String, Object>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {
continue;
}
if (requiredPropertys != null && !requiredPropertys.contains(key)) {// 如果不包含需要的属性则跳过
continue;
}
Method getter = property.getReadMethod();
Object value = getter != null ? getter.invoke(obj) : null;
map.put(key, value);
}
} catch (Exception e) {
map = null;
e.printStackTrace();
}
return map;
}
}
Java-实体与集合转换的更多相关文章
- JAVA常用的集合转换
在Java应用中进行集合对象间的转换是非常常见的事情,有时候在处理某些任务时选择一种好的数据结构往往会起到事半功倍的作用,因此熟悉每种数据结构并知道其特点对于程序员来说是非常重要的,而只知道这些是不够 ...
- 利用JAXB实现java实体类和xml互相转换
1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...
- 【Java 8】 集合间转换工具——Stream.collect
集合运算 交集 (list1 + list2) List<T> intersect = list1.stream() .filter(list2::contains) .collect(C ...
- 将java类的泛型集合转换成json对象
一般用extjs开发传输都是用json比较多,这个将来大家也许会用到... ConvertJsonUtils.java package com.sunweb.util.jsonfactory; imp ...
- Gson把json串转换成java实体对象
Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...
- java 字符串和集合互相转换
今天在写项目的时候遇到一个问题,就是要把得到的一个集合转换成字符串,发现 import org.apache.commons.lang.StringUtils; 有这么一个简单的方法:String s ...
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain; public clas ...
- 多年前写的DataTable与实体类的转换,已放github
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 代码 UnitTest G ...
- DataTable与实体类的转换
多年前写的DataTable与实体类的转换,已放github 阅读目录 介绍 起因 代码 UnitTest GitHub 介绍 很多年前一直使用Ado.net,后来慢慢转型到其他的orm,在转型过程中 ...
随机推荐
- Oracle分组函数实例
分组函数也叫聚合函数.如果在查询只想要查分组函数,那么跟平时的查询语句并无不同: SQL ,,,,) ; SUM(T.PRIZENUM) AVG(T.PRIZENUM) --------------- ...
- Qt学习笔记(1) hello world
Qt的简介: Qt是一个跨平台的C++ GUI库实现,原本只是以为它只提供一些图形接口,看来我还是低估了它,采用文档Qt学习之路2开始学习,不知道这个文档是不是有点老了,管他呢,先了解下. 搭建环境: ...
- 在同一服务器使用git分支建立线上 和 测试 项目
分支分配文件夹后 sourcetree 创建分支与合并 https://blog.csdn.net/qq_34975710/article/details/74469068 线上分支master 测试 ...
- 页面初始加载的是默认刷新一次(f5)
参考找不到了,不好意思.. 两种可以都试一下,解决问题就好了. 1.----------- <script type="text/javascript"> window ...
- SAX解析类:SaxHelper
public class SaxHelper extends DefaultHandler { private Person person; private ArrayList<Person&g ...
- POJ 3276 Face The Right Way(反转)
Face The Right Way Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6038 Accepted: 2 ...
- node中express的中间件之cookieParser
cookieParser中间件用于获取web浏览器发送的cookie中的内容.在使用了cookieParser中间件后, 代表客户端请求的htto.IncomingMessage对象就具有了一个coo ...
- sql sever数据库常用的执行语句
--使用master数据库use master --创建数据库文件create database 数据库名字 on( name=, --逻辑名称 filename= .ndf, --数据文件物理路径名 ...
- gif屏幕录像软件
ScreenToGif:http://screentogif.codeplex.com 备份下载地址:http://flask.pub/screentogif2.zip 本站连接:http ...
- leetcode547
public class Solution { private void dfs(int[,] M, int[] visited, int i) { ; j < M.GetLength(); j ...