`

java map转bean

 
阅读更多

      今天看博客看到一篇文章,谈的是将hibernate查询出来的数据组织到实体中,他的例子中是按照顺序把值放到实体中,也就是说写的hql的字段顺序得和实体中定义的顺序一致, 于是我就想那要是不一致呢,除了hibernate提供的构造器返回实体的方式,其实我们还可以利用java的反射去封装,于是就在hibernate的工具类下试着封装了下,封装完了之后感觉没必要,这完全就可以提取出来变成一个独立的工具类,而不仅仅局限于hibernate了,这样既可以满足一个hql查询返回了多个实体中的字段属性,且这些属性都是我们用到的一个业务类的属性,也可以满足用sql查询出来的结果,也可以在日常开发中用于map转bean,不过这类情况很少。

      于是有了下面这一段代码(毕业不到一年,代码写的不是很漂亮至少我这么认为 )

 

private static <T> T map2Bean(T t,Map map) throws Exception{
    Class clazz = t.getClass();
    //实例化类
	T entity = (T)clazz.newInstance();
	Set<String> keys = map.keySet();
	//变量map 赋值
	for(String key:keys){
		String fieldName = key;
		//判断是sql 还是hql返回的结果
		if(key.equals(key.toUpperCase())){
			//获取所有域变量
			Field[] fields = clazz.getDeclaredFields();
			for(Field field: fields){
				if(field.getName().toUpperCase().equals(key)) fieldName=field.getName();
				break;
			}
		}
		//设置赋值
		try {
			//参数的类型  clazz.getField(fieldName)
			Class<?> paramClass = clazz.getDeclaredField(fieldName).getType();
			//拼装set方法名称
			String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
			//根据名称获取方法
			Method method = clazz.getMethod(methodName, paramClass);
			//调用invoke执行赋值
			method.invoke(entity, map.get(key));
		} catch (Exception e) {
			//NoSuchMethod
		}
	}
    
	return entity;
}
 

 方法里就是通过反射与map key值相同的类的属性赋值,有一个地方需要注意,就是clazz.getField(fieldName)与clazz.getDeclaredField(fieldName)的区别,前者是获取类中非private的域变量,而后者包括private,我们大多数情况下用到的都应该是后者,谁也不想把私有的域都排除掉嘛!

         其实这里赋值有很多种方法,我们也可以获得域变量,通过 setAccessible方法取消Java语言检查,调用field.set(entity,value)方法直接操作域变量赋值,关于反射之前看过一篇文章写的很好,只是我的经验和水准有限吧,它之后的文章理解起来有些吃力,在这里把地址写下来,大家共同进步。

http://www.iteye.com/topic/1123081

 

分享到:
评论

相关推荐

    java Map转Bean Bean转Map Map排序

    java Map转Bean Bean转Map Map排序

    java Map转换成bean,利用java反射以及java和bean包

    总之,Java Map到Bean的转换是通过反射和JavaBeans规范实现的,这是Java开发中常用的一种数据转换技巧。理解并熟练运用这些知识,能够帮助我们更高效地处理各种数据结构,提升代码的灵活性。在实际项目中,可以根据...

    通过java反射实现map与bean之间互转

    // Bean转Map public static Map, Object&gt; beanToMap(Object obj) throws Exception { if (obj == null) { return null; } Map, Object&gt; map = new HashMap(); Class&lt;?&gt; clazz = obj.getClass(); Field[] ...

    java bean和map之间的互转

    在Java编程中,Java Bean和Map是两种常用的...总的来说,Java Bean和Map之间的互转在Java开发中非常常见,尤其是在数据交换和视图渲染时。理解并掌握这两种数据结构的转换技巧,有助于提升开发效率和代码的可维护性。

    Bean与Map转换工具类BeanMapConverter.java

    Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;

    java map转实体

    java map转实体可以利用java的反射去封装,于是就在hibernate的工具类下试着封装了下,封装完了之后感觉没必要,这完全就可以提取出来变成一个独立的工具类,而不仅仅局限于hibernate了,这样既可以满足一个hql查询...

    Map和Bean灵活转换工具类

    另一方面,`BeanUtils`类则是用于在Java Bean对象之间进行属性复制,或者将Java Bean转换为Map。这个工具类提供了一系列的方法,如`copyProperties()`,可以将一个Bean的属性值复制到另一个Bean中,实现了对象间的...

    List转换为List

    本知识点重点讲解将List&lt;Bean&gt;转换为List&lt;Map&gt;的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List转换为List及list转换为JsonArray的内容。 ### List&lt;Bean&gt;转换为List&lt;Map&gt; 在...

    Java Bean对象和Map相互转换.zip

    在Java编程中,Java Bean对象和Map之间的转换是常见的数据操作。这主要涉及到对象属性与键值对之间的映射,方便数据的存储、传递和处理。在这个主题中,我们将深入探讨如何使用Fastjson和BeanMap两个库来实现这种...

    Java_Bean2Map

    Java_Bean2Map,将实体类转化成对应的map的工具类

    将list转换成JavaBean

    将list&lt;Map&gt;转换成JavaBean的工具类

    Java Bean与Map互转源代码

    通用的Java Bean与Map互转的源代码,方便实用。

    xml和java bean互相转换工具包(简单易用)

    2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么全部大写,否则 无法读存BEAN值。 4、bean类boolean属性(Boolean无此要求),前面三个字母...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    map与Javabean相互转换实例

    public static Map, Object&gt; beanToMap(Object bean) throws IllegalAccessException { Map, Object&gt; map = new HashMap(); Class&lt;?&gt; clazz = bean.getClass(); for (Field field : clazz.getDeclaredFields()) {...

    各种转换,xml,实体bean,动态bean,map等

    标题和描述中提到的"各种转换,xml,实体bean,动态bean,map等"涉及了Java编程语言中的一些核心概念,这些概念在企业级应用开发中非常常见。下面我们将详细探讨这些知识点。 1. **XML(Extensible Markup Language)*...

    java实现Object和Map之间的转换3种方式

    Java 实现 Object 和 Map 之间的转换 3 种方式 Java 中,Object 和 Map 是 two kinds of data types 经常需要相互转换的数据类型。以下将介绍 Java 实现 Object 和 Map 之间的转换的 3 种方式。 方式一:使用 ...

    java-遍历map

    在Java编程语言中,`Map`接口是一种非常重要的数据结构,用于存储键值对。它在实际应用中极为广泛,特别是在处理关联数据时。本文将深入探讨如何在Java中使用`keySet`方法来遍历`Map`集合,以及相关的知识点。 ### ...

    java 读取csv 并转为Map<String,Object>

    通过引用【opevcsv】依赖,逐行读取数据 并转为Map,Object&gt;格式,后续可以通过BeanUtil.MaptoBean()方法将map转为你需要的bean对象; csv文件必须带表头,bean对象命名符合驼峰格式; 通过此方法可以快速的将文件...

    深度转换Bean<->Bean的Mapper

    在Java开发中,数据对象(通常称为Bean)之间的转换是一个常见的任务。BeanMapper是一个实用工具,可以帮助我们高效地实现Bean到Bean的深度转换。本文将深入探讨BeanMapper的工作原理、如何使用它以及其背后的源码...

Global site tag (gtag.js) - Google Analytics