bean->map或map->bean的工具类主要针对基本类型
来源:互联网 发布:java ocr身份证识别 编辑:程序博客网 时间:2024/04/25 08:22
package org.xlp.utils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* bean->map或map->bean的工具类主要针对基本类型
*
* @author 徐龙平
* <p>
* 2016-12-03
* </p>
* @version 1.0
*
*/
public class XLPConvertUtil {
/**
* 把javabean转换成map
* @param bean
* @return map集合 假如参数为null则返回大小为0的map,此函数不返回null
* 假如某个字段的值为空,则map中不包含这个字断
*/
public static <T> Map<String, Object> beanToMap(T bean){
return beanToMap(bean, null);
}
/**
* 把javabean转换成map
* @param bean
* @param dateType 时间显示格式
* @return map集合 假如参数为null则返回大小为0的map,此函数不返回null
* 假如某个字段的值为空,则map中不包含这个字断
*/
public static <T> Map<String, Object> beanToMap(T bean, String dateType){
Map<String, Object> map = new HashMap<String, Object>();
if (bean != null) {
Class<? extends Object> cs = bean.getClass();
Field[] fields = cs.getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
//把第一个字符变成大写
String firstChar = fieldName.substring(0,1).toUpperCase();
String getter = "get" + firstChar;
String is = "is" + firstChar;
if (fieldName.length() > 1) {
String s = fieldName.substring(1);
getter = getter + s;
is = is + s;
}
Method method = null;
try {
method = cs.getMethod(getter, new Class<?>[]{});
//执行get方法
Object value = method.invoke(bean, new Object[]{});
if (value != null) {
if (dateType != null && field.getGenericType().toString()
.equals("class java.util.Date")) {
map.put(fieldName, DateUtil.dateToString((Date)value, dateType));
}else {
map.put(fieldName, value);
}
}
} catch (NoSuchMethodException e) {
try {
method = cs.getMethod(is, new Class<?>[]{});
//执行is方法
Object value = method.invoke(bean, new Object[]{});
if (value != null) {
map.put(fieldName, value);
}
} catch (Exception e1) {
e1.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return map;
}
/**
* 把map转换成javabean
* @param beanClass
* @param map
* @return 假如参数有一个参数为null或该函数内部产生异常时,则返回null
*/
public static <T> T mapToBean(Class<T> beanClass, Map<String, Object> map){
return mapToBean(beanClass, map, null);
}
/**
* 把map转换成javabean
* @param beanClass
* @param map
* @param dateType 改格式字符串转换成date
* @return 假如参数有一个参数为null或该函数内部产生异常时,则返回null
*/
public static <T> T mapToBean(Class<T> beanClass, Map<String, Object> map
, String dateType){
if (beanClass == null || map == null) {
return null;
}
try {
//存储javabean字段名的list集合
List<Field> fieldList = Arrays.asList(beanClass.getDeclaredFields());
Iterator<Field> it = null;
T bean = beanClass.newInstance();
Set<String> keysSet = map.keySet();
Method method = null;
for (String key : keysSet) {
if (!StringUtil.isEmpty(key)) {
String methodName = "set" + key.substring(0,1).toUpperCase();
if (key.length() > 1) {
methodName = methodName + key.substring(1);
}
try {
it = fieldList.iterator();
while(it.hasNext()) {
Field field = it.next();
if (field != null && field.getName().equals(key)) {
Object value = map.get(key);
method = beanClass.getMethod(methodName, new Class<?>[]{field.getType()});
if (dateType != null && field.getGenericType().toString()
.equals("class java.util.Date")) {
method.invoke(bean, new Object[]{DateUtil.stringToDate(value.toString(),
dateType)});
}else {
method.invoke(bean, new Object[]{value});
}
break;
}
}
} catch (NoSuchMethodException e) {
}
}
}
return bean;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* bean->map或map->bean的工具类主要针对基本类型
*
* @author 徐龙平
* <p>
* 2016-12-03
* </p>
* @version 1.0
*
*/
public class XLPConvertUtil {
/**
* 把javabean转换成map
* @param bean
* @return map集合 假如参数为null则返回大小为0的map,此函数不返回null
* 假如某个字段的值为空,则map中不包含这个字断
*/
public static <T> Map<String, Object> beanToMap(T bean){
return beanToMap(bean, null);
}
/**
* 把javabean转换成map
* @param bean
* @param dateType 时间显示格式
* @return map集合 假如参数为null则返回大小为0的map,此函数不返回null
* 假如某个字段的值为空,则map中不包含这个字断
*/
public static <T> Map<String, Object> beanToMap(T bean, String dateType){
Map<String, Object> map = new HashMap<String, Object>();
if (bean != null) {
Class<? extends Object> cs = bean.getClass();
Field[] fields = cs.getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
//把第一个字符变成大写
String firstChar = fieldName.substring(0,1).toUpperCase();
String getter = "get" + firstChar;
String is = "is" + firstChar;
if (fieldName.length() > 1) {
String s = fieldName.substring(1);
getter = getter + s;
is = is + s;
}
Method method = null;
try {
method = cs.getMethod(getter, new Class<?>[]{});
//执行get方法
Object value = method.invoke(bean, new Object[]{});
if (value != null) {
if (dateType != null && field.getGenericType().toString()
.equals("class java.util.Date")) {
map.put(fieldName, DateUtil.dateToString((Date)value, dateType));
}else {
map.put(fieldName, value);
}
}
} catch (NoSuchMethodException e) {
try {
method = cs.getMethod(is, new Class<?>[]{});
//执行is方法
Object value = method.invoke(bean, new Object[]{});
if (value != null) {
map.put(fieldName, value);
}
} catch (Exception e1) {
e1.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return map;
}
/**
* 把map转换成javabean
* @param beanClass
* @param map
* @return 假如参数有一个参数为null或该函数内部产生异常时,则返回null
*/
public static <T> T mapToBean(Class<T> beanClass, Map<String, Object> map){
return mapToBean(beanClass, map, null);
}
/**
* 把map转换成javabean
* @param beanClass
* @param map
* @param dateType 改格式字符串转换成date
* @return 假如参数有一个参数为null或该函数内部产生异常时,则返回null
*/
public static <T> T mapToBean(Class<T> beanClass, Map<String, Object> map
, String dateType){
if (beanClass == null || map == null) {
return null;
}
try {
//存储javabean字段名的list集合
List<Field> fieldList = Arrays.asList(beanClass.getDeclaredFields());
Iterator<Field> it = null;
T bean = beanClass.newInstance();
Set<String> keysSet = map.keySet();
Method method = null;
for (String key : keysSet) {
if (!StringUtil.isEmpty(key)) {
String methodName = "set" + key.substring(0,1).toUpperCase();
if (key.length() > 1) {
methodName = methodName + key.substring(1);
}
try {
it = fieldList.iterator();
while(it.hasNext()) {
Field field = it.next();
if (field != null && field.getName().equals(key)) {
Object value = map.get(key);
method = beanClass.getMethod(methodName, new Class<?>[]{field.getType()});
if (dateType != null && field.getGenericType().toString()
.equals("class java.util.Date")) {
method.invoke(bean, new Object[]{DateUtil.stringToDate(value.toString(),
dateType)});
}else {
method.invoke(bean, new Object[]{value});
}
break;
}
}
} catch (NoSuchMethodException e) {
}
}
}
return bean;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
0 0
- bean->map或map->bean的工具类主要针对基本类型
- java实现的bean类型和map类型相互转换的工具类
- Object类型的Bean转Map
- java基于反射的Map转Bean的工具类
- java基于反射的Map转Bean的工具类
- Map转bean多类型转换,bean转map
- Bean类和Map的相互转换
- Map到Bean的转换 javaUtil类
- spring bean map的定义
- map和bean的故事
- JAVA Map转换为Bean或VO
- 将String,json转成Map或bean
- #.将获取的map类型封装成bean
- Bean和Map相互转化-Java工具类(一)
- map和bean互转工具
- Map to Bean map 转 bean
- jackson工具类json转list、json转map、json转bean、bean转json
- 利用Java的反射机制实现Bean实体与Map自动转换的工具类
- Qt在Windows下的三种编程环境搭建
- ListPopupWindow的简单使用
- Spring
- 二叉树的遍历操作
- Opengl 和 GLSL版本对应关系
- bean->map或map->bean的工具类主要针对基本类型
- MFC中的winmain
- web安全基础
- 集合的并查
- Shell部分16
- Android编程之接口数据处理
- MySQL服务器日志(1)
- Java递归遍历删除拷贝文件以及获取文件夹大小
- C++自定义矩阵并重载“+”运算符,指针返回错误