代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
HashMap与Bean互转
作者:
首君
/ 发布于
2015/11/4
/
620
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * HashMap与Bean互转工具类 * * @author hailan * @time 2015-10-12下午05:56:34 */ public class HashMapBeanTools { /** * HashMap转换成JavaBean * * @author hailan * @time 下午05:57:16 * @param map * @param cls * @return */ public static Object hashMapToJavaBean(HashMap<?,?> map, Class<?> cls) { Object obj = null; try { obj = cls.newInstance(); } catch (Exception e) { e.printStackTrace(); } // 取出bean里的所有方法 Method[] methods = cls.getMethods(); for (int i = 0; i < methods.length; i++) { // 取方法名 String method = methods[i].getName(); // 取出方法的类型 Class<?>[] cc = methods[i].getParameterTypes(); if (cc.length != 1) continue; // 如果方法名没有以set开头的则退出本次for if (!method.startsWith("set") ) continue; // 类型 String type = cc[0].getSimpleName(); try { // Object value = method.substring(3,4).toLowerCase().concat(method.substring(4)); // 如果map里有该key if (map.containsKey(value)) { // 调用其底层方法 setValue(type, map.get(value), i, methods, obj); } } catch (Exception e) { e.printStackTrace(); } } return obj; } /** * 调用底层方法设置值 * * @author hailan * @time 下午06:01:56 * @param type * @param value * @param i * @param method * @param bean * @throws Exception */ private static void setValue(String type, Object value, int i, Method[] method, Object bean) throws Exception { if (value != null && !value.equals("")) { try { if (type.equals("String")) { // 第一个参数:从中调用基础方法的对象 第二个参数:用于方法调用的参数 method[i].invoke(bean, new Object[] { value }); } else if (type.equals("int") || type.equals("Integer")) { method[i].invoke(bean, new Object[] { new Integer("" + value) }); } else if (type.equals("BigDecimal")) { method[i].invoke(bean, new Object[] { new BigDecimal((String)value) }); } else if (type.equals("long") || type.equals("Long")) { method[i].invoke(bean, new Object[] { new Long("" + value) }); } else if (type.equals("boolean") || type.equals("Boolean")) { method[i].invoke(bean, new Object[] { Boolean.valueOf("" + value) }); } else if (type.equals("Date")) { Date date = null; if (value.getClass().getName().equals("java.util.Date")) { date = (Date) value; } else { //根据文件内的格式不同修改,时间格式太多在此不做通用格式处理。 if (value.toString().length() > 10){ String format = "yyyy-MM-dd HHmmss"; date = parseDateTime("" + value, format); } else if (value.toString().length() == 10){ String format = "yyyy-MM-dd"; date = parseDateTime("" + value, format); } else if (value.toString().length() == 8){ String format = "yyyyMMdd"; date = parseDateTime("" + value, format); } else if (value.toString().length() == 14){ String format = "yyyyMMddHHmmss"; date = parseDateTime("" + value, format); }else if (value.toString().length() == 6){ String format = "HHmmss"; date = parseDateTime("" + value, format); } } if (date != null) { method[i].invoke(bean, new Object[] { date }); } } else if (type.equals("byte[]")) { method[i].invoke(bean, new Object[] { new String(value + "").getBytes() }); } } catch (Exception e) { e.printStackTrace(); throw e; } } } /** * 日期格式转换 * * @author hailan * @time 下午06:02:59 * @param dateValue * @param format * @return */ private static Date parseDateTime(String dateValue, String format) { SimpleDateFormat obj = new SimpleDateFormat(format); try { return obj.parse(dateValue); } catch (Exception e) { e.printStackTrace(); } return null; } public static Map<String, Object> hashJavaBeanToMap(Object ojt) { Class<?> cls = ojt.getClass(); Field[] field = cls.getDeclaredFields(); HashMap<String, Object> mapbean = new HashMap<String, Object>(); for(int i=0;i<field.length;i++){ Field f = field[i]; f.setAccessible(true); try { mapbean.put(f.getName(), f.get(cls)); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return mapbean; } }
试试其它关键字
HashMap
Bean
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
首君
贡献的其它代码
(
39
)
.
数组操作ArrayUtil
.
python 抓取搜狗指定公众号
.
UUID工具类
.
利用POI操作PPT
.
个性化的圆角代码
.
获取本机外网ip
.
装饰器判断用户是否已经登录
.
创建存储过程
.
产生MAXN以内的所有素数
.
SqlServer2000中快速导出登陆信息脚本
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3