JavaBean与Map的相互转换
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的相互转换的更多相关文章
- JavaBean和Map的相互转换
JavaBean和Map的相互转换 一.JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无 ...
- JavaBean和Map转换封装类
package com.ljq.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans. ...
- javaBean与Map<String,Object>互转
背景:有时候想不通阿帕奇的BeanUtils是怎么进行map和Bean互相转化的. 工作闲暇之余,自己写个一小段代码,一探究竟,试试才发现,原来一切并非我们想的那么什么和复杂. 注:这里只是简单实例, ...
- JavaBean 和 Map 之间互相转换
JavaBean 和 Map 之间互相转换 import java.beans.BeanInfo; import java.beans.IntrospectionException; import j ...
- Json、JavaBean、Map、XML之间的互转
思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId ...
- javabean转换为map对象
在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...
- 基于java反射的javabean和map相互转换的工具类
话不多说,代码如下 package com.study; import java.lang.reflect.Field; import java.util.HashMap; import java.u ...
- JavaBean与Map<String,Object>相互转换
一.为什么要实现javaBean与Map<String,Object>相互转换 Spring中的BaseCommandController对象可以将传递过来的参数封装到一个JavaBean ...
- 1.利用BeanMap进行对象与Map的相互转换
javabean与map的转换有很多种方式,比如: 1.通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个b ...
随机推荐
- Intel RealSense Depth Camera D435安装ROS 驱动——Ubuntu16.04
官方教程 软件包下载链接 https://github.com/IntelRealSense/realsense-ros Download/Clone librealsense github repo ...
- MyBatis与JPA的区别
参考博客: https://www.cnblogs.com/llywy/p/10103136.html https://www.jianshu.com/p/32ce87c163d6 MyBatis分为 ...
- NTP时钟同步学习记录
--1 要点回顾 . 1. NTP唯一配置文件:/etc/ntp.conf . 2. NTP系统日志记录:/var/log/ntp . 3. ntp.conf简要介绍 - 利用 restrict 来管 ...
- 深入理解JVM之类加载
---title: [学习]深入理解JVM之类加载.mddate: 2019-10-20 22:20:06tags: JVM 类加载--- Java类的加载,连接,初始化都是在程序运行期间执行的 ## ...
- @Value取值为NULL的解决方案
在spring mvc架构中,如果希望在程序中直接使用properties中定义的配置值,通常使用一下方式来获取: @Value("${tag}") private String ...
- STL与泛型编程-第一周笔记-Geekband
1, 模板观念与函数模板 简单模板: template< typename T > T Function( T a, T b) {- } 类模板: template struct Obje ...
- centos7.5安装公版mysql5.7.25
######### 卸载原来系统安装的包 # yum remove -y java cvs libselinux-devel postgresql mysql ecj jna sinjdoc 依赖包安 ...
- 最全Kubernetes审计日志方案
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...
- typescript使用小结
1. typescript使得js在书写的过程中有了参数类型的限制在 传参的过程中变得严格,减少了不必要的错误的发生 2. tslint同时也兼备了一部分eslint的作用,在一定程度上我们使用tsl ...
- 通过Angular-cli创建新项目
前提:已经安装Git 方法一:(推荐) 1.在需要创建项目的文件夹中右键打开 Git Bush Here ,在此输入 ng new ‘项目名’ --skip-install (如下my-app ...