博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.利用BeanMap进行对象与Map的相互转换
阅读量:6078 次
发布时间:2019-06-20

本文共 2708 字,大约阅读时间需要 9 分钟。

javabean与map的转换有很多种方式,比如:

1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个bean,就需要12秒!!!不推荐使用

2、通过java反射,获取bean类的属性和值,再转换到map对应的键值对中,这种方法次之,但稍微有点麻烦

3、通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,它跟第二种方式的区别就是因为使用了缓存,初次创建bean时需要初始化,之后就使用缓存,

所以速度极快,经测试,循环bean和map的转换10000次,仅需要300毫秒左右。

 

所以,推荐第3种方式。  以下是相关代码:

/*** 将对象装换为map* @param bean* @return*/public static 
Map
beanToMap(T bean) {  Map
map = Maps.newHashMap();  if (bean != null) {    BeanMap beanMap = BeanMap.create(bean);    for (Object key : beanMap.keySet()) {    map.put(key+"", beanMap.get(key));  } }return map;}/*** 将map装换为javabean对象* @param map* @param bean* @return*/public static
T mapToBean(Map
map,T bean) {  BeanMap beanMap = BeanMap.create(bean);  beanMap.putAll(map);  return bean;}/*** 将List
转换为List
>* @param objList* @return* @throws JsonGenerationException* @throws JsonMappingException* @throws IOException*/public static
List
> objectsToMaps(List
objList) {  List
> list = Lists.newArrayList();  if (objList != null && objList.size() > 0) {    Map
map = null;    T bean = null;    for (int i = 0,size = objList.size(); i < size; i++) {      bean = objList.get(i);      map = beanToMap(bean);      list.add(map);    }  }  return list;}/*** 将List
>转换为List
* @param maps* @param clazz* @return* @throws InstantiationException* @throws IllegalAccessException*/public static
List
mapsToObjects(List
> maps,Class
clazz) throws InstantiationException, IllegalAccessException {  List
list = Lists.newArrayList();  if (maps != null && maps.size() > 0) {    Map
map = null;    T bean = null;    for (int i = 0,size = maps.size(); i < size; i++) {      map = maps.get(i);      bean = clazz.newInstance();      mapToBean(map, bean);      list.add(bean);    }}return list;}

BeanUtils.populate的用法

BeanUtils位于org.apache.commons.beanutils.BeanUtils下面,其方法populate的作用解释如下:

完整方法:

BeanUtils.populate( Object bean, Map properties ),

这个方法会遍历map<key, value>中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。

源代码:

public void populate(Object bean, Map properties) throws IllegalAccessException, InvocationTargetException {
if (bean != null && properties != null) {
Iterator entries = properties.entrySet().iterator(); while(entries.hasNext()) {
Entry entry = (Entry)entries.next(); String name = (String)entry.getKey(); if (name != null) {
this.setProperty(bean, name, entry.getValue()); } } } }

 

原文:https://blog.csdn.net/q358543781/article/details/50176953

转载于:https://www.cnblogs.com/yaboya/p/10544328.html

你可能感兴趣的文章
git学习笔记(二)—— 创建版本库&&版本管理
查看>>
.Net Remoting(应用程序域) - Part.1
查看>>
windows server 2008下的一些设置技巧及优化
查看>>
[置顶] lvs-tun隧道模式搭建
查看>>
PHP ADLogin
查看>>
Web服务器 之 Debian下给apache加载ssl
查看>>
CTreeCtrl控件使用技巧
查看>>
第三届云计算大会 - Dell云计算: 企业的有效转型策略(转载)
查看>>
关于延迟时间的一点智慧
查看>>
33.NET对加密和解密的支持
查看>>
MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件02-多文件上传...
查看>>
jQuery显示和隐藏 常用的状态判断方法
查看>>
[翻译]Shape comparison language
查看>>
【Android Lock Pattern】图案解锁(一):LockPatternView源代码
查看>>
NLP常用信息资源
查看>>
精益求精--卓越的互联网产品设计与管理
查看>>
关于aspnet 2.0
查看>>
JavaScript验证Email地址
查看>>
opencl-Shader
查看>>
Inno Setup打包的安装程序在Vista/Win7上自动提示需要管理员权限的方法
查看>>