自己写的两个方法,关于bean和map的转化,比网上的效率快很多

/**

*

* @Title: convertMap

* @Description: 使用泛型Map转bean

* 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法。

* 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名

* 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致,

* 就将map的value插入bean中(前提是类型必须是一致,否则报错)

* @param @param <T>

* @param @param map

* @param @param tc

* @param @return

* @param @throws IllegalArgumentException

* @param @throws IllegalAccessException

* @param @throws InvocationTargetException

* @param @throws SecurityException

* @param @throws NoSuchMethodException

* @param @throws InstantiationException 设定参数

* @return T 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static <T> T  convertMap(Map map, Class<T> tc) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException, InstantiationException{

T t = tc.newInstance();

Iterator it=map.entrySet().iterator();

Method [] methods=tc.getDeclaredMethods();

while(it.hasNext()){

Map.Entry entry=(Map.Entry)it.next();

String methodName="set"+BeantoMap.fristToUpperCase(entry.getKey().toString());

for(Method method:methods){

if(method.getName().equals(methodName)){

Object value=entry.getValue();

method.invoke(t, value);

break;

}

}

}

return t;

}

/**

*

* @Title: fristToUpperCase

* @Description: 首字母变大写

* @param @param str

* @param @return 设定参数

* @return String 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static String fristToUpperCase(String str){

str=str.substring(0,1).toUpperCase()+str.substring(1,str.length());

return str;

}

/**

*

* @Title: fristToUpperCase

* @Description: 首字母变小写

* @param @param str

* @param @return 设定参数

* @return String 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static String fristToLowerCase(String str){

str=str.substring(0,1).toLowerCase()+str.substring(1,str.length());

return str;

}

/**

*

* @Title: convertBean

* @Description: 实体bean转成Map

* 遍历对象所有方法

* 获取实体bean中get的方法,使用反射的获取方法返回值,如果值不为空,就为map的value,

* 然后把get方法去除get的部分,首字母变小写,为map的key

* @param @param obj

* @param @return

* @param @throws IllegalArgumentException

* @param @throws IllegalAccessException

* @param @throws InvocationTargetException 设定参数

* @return Map 返回类型

* @since  1.0.0

* @author HuYiDong

* @throws

*/

public static Map convertBean(Object obj) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{

Class cla=obj.getClass();

Method [] methods=cla.getDeclaredMethods();

Map map =new HashMap();

for(Method method: methods){

if(method.getName().startsWith("get")){

String name=method.getName().substring(3,method.getName().length());

String key =BeantoMap.fristToLowerCase(name);

Object value = method.invoke(obj);

if(null!=value)map.put(key, value);

}

}

return map;

}

时间: 2024-08-25 07:49:42

自己写的两个方法,关于bean和map的转化,比网上的效率快很多的相关文章

MyBatis无限级分类实现的两种方法--自关联与map集合

1.这回先创建数据库吧 下表cid是CategoryId的缩写,cname是CategoryName的缩写,pid是parentId的缩写 无限级分类一般都包含这三个属性,至少也要包含cid和pid才能建立无限级关联 ok,这个东东就是无限级分类了. 即便是外行人稍微看一眼也能发现cid为1的图书在小说和周刊两行中作为了pid,也就是说小说和周刊的父级分类就是图书 图书和饮料的pid是0,代表他们是顶级分类 如果没有其他约束条件,这张表几乎可以无限向下级延伸,是一个树形结构,这里就不写什么数学公

Spring -- spEL&amp;Bean的生命周期&amp;工厂方法配置Bean

对于学习spring有帮助的网站:http://jinnianshilongnian.iteye.com/blog/1482071 Spring表达式语言:SpEL Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于 EL:SpEL 使用 #{-} 作为定界符,所有在大框号中的字符都将被认为是 SpEL SpEL 为 bean 的属性进行动态赋值提供了便利 通过 SpEL 可以实现: 1.通过 bean 的 id 对 bean 进行引用 2

Java构造和解析Json数据的两种方法详解二(转)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法示例. 一.介绍 org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究. 二.下载jar依赖包  

Java构造和解析Json数据的两种方法详解二

三.基本方法介绍 由于org.json不能直接与bean进行转换,需要通过map进行中转,为了方便,我这里写了一个工具类JsonHelper,用于Json与Map.Bean的相互转换 package com.json; import java.lang.reflect.Method; import java.text.ParseException; import java.util.HashMap; import java.util.Iterator; import java.util.Map;

Java构造和解析Json数据的两种方法详解二——org.json

转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法示例.       用json-lib构造和解析Json数据的方法详解请参见我上一篇博文:Java构造和解析Json数据的两种方法详解一 一.介

个人理解request.getRequestDispatcher()的两个方法forward()/include()。哪里错了,还麻烦各位提醒!

首先,解释一下request.getRequestDispatcher(String arg0)是"转向"的意思,跟response.sendRedirect(String arg0)重定向是不一样的; 1..request.getRequestDispatcher(String arg0)---转向的特点: 1.1.地址栏的URl是不变,如:servlet --A转向到servlet--- B的时候,地址栏还是 A它本身,但是内容其实上已经是B的内容了. 2..response.se

实现icon和文字垂直居中的两种方法-(vertical-align and line-height)

方法一:vertical-align 在w3school定义:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐 百思不得骑姐 然后Google,反正在w3schools上面并没有找到定义 仅仅能写代码測试 而后个人理解,才作出如此解释> 该属性作用的对象:行内元素(inline,inline-block也有行内属性) 其它table-cell 经常使用属性值:top middle bottom 个人理解 个人觉得,普通情况下,这些字母自发"坐落"的这条线就是基线.然后两

Android--自定义荷载进度的两种方法

博客撰写人:It一zhai男 转载请标明地址:http://www.cnblogs.com/ityizhainan/p/5914487.html 本文将用两个方法来写类似汽车荷载的进度 用LinearLayout的addview方法加上for循环 用自定义控件的方法 先上截图 1. 用LinearLayout的addview方法加上for循环 1.1 processtest01.xml文件: <?xml version="1.0" encoding="utf-8&quo

两个方法判断启动盘制作情况

对于刚接触U盘装系统的用户来说,他们经常有一个疑问,就是用U盘启动制作工具尝试制作U盘启动盘后,不确定它有没有制作成功.针对这个问题,小编就告诉大家两个判断方法. 第一个方法是,您在制作U盘启动盘之前,首先要看一下U盘的空间大小.然后制作完成U盘启动盘之后,我们再看看U盘的空间,如果制作之后的U盘空间比制作之前的U盘空间小了100多M,那么说明PE系统已经写到您的U盘里面去了,您可以试着重启一下选择U盘启动看能不能使用. 第二个方法就是通过磁盘管理那里查看.在桌面上,我的电脑右键,选择管理,然后