package com.bizvane.utils.tools; import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set; import org.apache.log4j.Logger;
import org.springframework.util.StringUtils; public class BeanUtils extends org.apache.commons.beanutils.BeanUtils
{
private static final Logger logger = Logger.getLogger(BeanUtils.class); private static final String EXCLUDE_UID = "serialVersionUID"; /**
* 类转换为map
* @param bean
* @param isExcludeUid 是否排除序列化
* @param isExcludeNullOrEmpty 是否排除空或者null值
* @param isAsc 是否ascii排序
* @return 【参数说明】
*
* @return Map<String,Object> 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static Map<String, Object> beanToMap(Object bean,
boolean isExcludeUid, boolean isExcludeNullOrEmpty, boolean isAsc)
{
if (null == bean)
{
return null;
} Map<String, Object> result = new HashMap<String, Object>();
try
{
Field[] fields = bean.getClass().getDeclaredFields();
for (Field field : fields)
{
//解除访问权限
field.setAccessible(true);
String key = field.getName();//属性名 //排除序列化产生的serialVersionUID
if (isExcludeUid && !StringUtils.isEmpty(key)
&& EXCLUDE_UID.equals(key))
{
continue;
} Object value = field.get(bean);//值
//排除值为空的字段
if (isExcludeNullOrEmpty && null == value)
{
continue;
}
result.put(key, value);
if (isAsc)
{
result = ascSort(result);
}
}
}
catch (Exception e)
{
e.printStackTrace();
logger.error("bean转换map出错");
}
return result;
} /**
* 对map进行ascII排序
*
* @param map
* @return 【参数说明】
*
* @return Map<String,Object> 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static Map<String, Object> ascSort(Map<String, Object> map)
{ Map<String, Object> result = new LinkedHashMap<String, Object>();
Set<String> keySet = map.keySet();
String[] array = keySet.toArray(new String[keySet.size()]);
Arrays.sort(array, String.CASE_INSENSITIVE_ORDER);
for (String key : array)
{
result.put(key, map.get(key));
} return result;
} /**
* 类转换为map
* 默认排除UID属性
* 默认不排除为null值
* @param bean
* @return 【参数说明】
*
* @return Map<String,Object> 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static Map<String, Object> beanToMap(Object bean)
{
return beanToMap(bean, true, false, false);
} /**
* map转换bean
*
* @param map
* @param clazz
* @return 【参数说明】
*
* @return T 【返回类型说明】
* @exception throws 【违例类型】 【违例说明】
* @see 【类、类#方法、类#成员】
*/
public static <T> T mapToBean(Map<String, Object> map, Class<T> clazz)
{
T bean = null;
try
{
bean = clazz.newInstance();
Field[] fields = clazz.getDeclaredFields();//获取属性集合
//Method[] methods = clazz.getMethods();//获取所有方法
for (Field field : fields)
{
field.setAccessible(true);
String key = field.getName();
//排除序列化产生的serialVersionUID
if (!StringUtils.isEmpty(key) && EXCLUDE_UID.equals(key))
{
continue;
} Object value = map.get(key);
field.set(bean, value);
}
}
catch (Exception e)
{
e.printStackTrace();
logger.error("map转换bean出错");
}
return bean;
} public static void main(String[] args)
{ } }

JavaBean与Map的相互转换的更多相关文章

  1. JavaBean和Map的相互转换

    JavaBean和Map的相互转换 一.JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无 ...

  2. JavaBean和Map转换封装类

    package com.ljq.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans. ...

  3. javaBean与Map<String,Object>互转

    背景:有时候想不通阿帕奇的BeanUtils是怎么进行map和Bean互相转化的. 工作闲暇之余,自己写个一小段代码,一探究竟,试试才发现,原来一切并非我们想的那么什么和复杂. 注:这里只是简单实例, ...

  4. JavaBean 和 Map 之间互相转换

    JavaBean 和 Map 之间互相转换 import java.beans.BeanInfo; import java.beans.IntrospectionException; import j ...

  5. Json、JavaBean、Map、XML之间的互转

    思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId ...

  6. javabean转换为map对象

    在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...

  7. 基于java反射的javabean和map相互转换的工具类

    话不多说,代码如下 package com.study; import java.lang.reflect.Field; import java.util.HashMap; import java.u ...

  8. JavaBean与Map<String,Object>相互转换

    一.为什么要实现javaBean与Map<String,Object>相互转换 Spring中的BaseCommandController对象可以将传递过来的参数封装到一个JavaBean ...

  9. 1.利用BeanMap进行对象与Map的相互转换

    javabean与map的转换有很多种方式,比如: 1.通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个b ...

随机推荐

  1. 基于MFC的实时可视化项目中视图刷新消息的严谨使用

    在实时可视项目中,视图的实时刷新显示对软件的体验感来说非常重要,当算法的效率达到实时,比如一秒40帧,如果实时显示帧率更不上,则体验感将大大折扣,让用户感觉你的算法并没有40帧,当然最关键的是解决显示 ...

  2. String方法之fromCharCode()和charCodeAt()

    1.fromCharCode fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串. 语法   我们可以根据 Unicode 来输出 "HELLO" ...

  3. memcache课程---1、memcache介绍及安装(memcache作用)

    memcache课程---1.memcache介绍及安装(memcache作用) 一.总结 一句话总结: 减少对数据库的访问,因为数据库的访问比较花费时间 1.memcache为什么比操作数据库快的多 ...

  4. CDATA标签用法

    今天在xml文件里看到有CDATA标签的使用,   答案如下: CDATA 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data). 在 X ...

  5. Java笔记 - 输入输出流

    java.io包中定义了各式各样的"流(stream)" 类型(类或抽象类),通过标准的方法实现对于数据的输入/输出操作. 一.流类型分类 以从不同的角度对其进行分类:按数据流的方 ...

  6. Origin使用自定义函数拟合曲线函数

    (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年10月28日) 最近应该是六叔的物化理论作业要交了吧,很多人问我六叔的作业里面有两道题要怎么进行图像函数的拟合.综 ...

  7. C#获取七牛云token/删除七牛云图片接口

    // 获取七牛token public ApiResponse GetQiniuToken(QiniuToken req) { try { Mac mac = new Mac(req.AccessKe ...

  8. Markdown的入门教程,非常的使用

    原文链接: https://www.jianshu.com/p/20e82ddb37cb 链接地址  点我      粘贴进来的内容竟然没有图片,好气呦 目录 概述 简介 官方文档 Markdown编 ...

  9. ASCII、Unicode、UTF-8 字符串和编码

    字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...

  10. sql server 获取指定格式的当前日期

    使用sqlserver日期函数中的getdate()可以获取当现的日期,下面就将为您介绍这种使用sqlserver日期函数获取当前日期的方法. 但是如果我们只需要得到当前的日期,不需要时间部分,或者不 ...