- 浏览: 123296 次
- 性别:
文章分类
- 全部博客 (86)
- struts2 (1)
- tomcat (5)
- Oracle (12)
- Oracle基础 (10)
- Oracle-IMP (1)
- Oracle-FUNCTION (1)
- java-基础 (21)
- java-术语 (1)
- java-Error (1)
- java-Exception (2)
- java-数据库连接池 (1)
- java-excel-txt (1)
- js-字符串 (1)
- js-基础 (3)
- Python (1)
- Access-基础 (1)
- Often-English (1)
- java-版本控制 (5)
- 报表-IReport (2)
- Mysql (4)
- Java IDE (5)
- Shrio (1)
- SpringMVC (1)
最新评论
import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; /** * 反射工具类 * 利用反射 get set 属性值 * bean <--> map * */ public class BeanReflectUtil { /** * get属性的值到Map * @param bean * @param valMap */ public static Map<Object, Object> getFieldValueMap(Object bean) { Map<Object, Object> valueMap = new HashMap<Object, Object>(); PropertyDescriptor[] props = getPropertyDescriptors(bean); for(PropertyDescriptor p:props){ Method getter = p.getReadMethod(); if(!"class".equals(p.getName())){ try { valueMap.put(p.getName(), getter.invoke(bean)); } catch (Exception e) { continue; } } } return valueMap; } /** * set属性的值到Bean * @param bean * @param valMap */ public static void setFieldValue(Object bean, Map<Object, Object> valMap) { PropertyDescriptor[] props = getPropertyDescriptors(bean); for(PropertyDescriptor p:props){ Method setter = p.getWriteMethod(); try { setter.invoke(bean,valMap.get(p.getName())); } catch (Exception e) { continue; } } } private static PropertyDescriptor[] getPropertyDescriptors(Object bean){ Class<?> cls = bean.getClass(); BeanInfo beanInfo = null; try { beanInfo = Introspector.getBeanInfo(cls); } catch (IntrospectionException e) { e.printStackTrace(); } return beanInfo.getPropertyDescriptors(); } public static void main(String[] args) { Test test = new Test(); Test sunTest = new Test(); sunTest.setId(2); Map<Object,Object> valMap =new HashMap<Object, Object>(); valMap.put("id", 1); valMap.put("nameTest", "nameTest1"); valMap.put("test", sunTest); valMap.put("name", "name1"); BeanReflectUtil.setFieldValue(test, valMap); valMap = BeanReflectUtil.getFieldValueMap(test); for(Object obj:valMap.keySet()){ System.out.println(obj + " ------ "+ valMap.get(obj)); } } } /** * 测试类 * @author user */ class Test{ private int id; //常规测试 private String namemethod; //测试用get方法后的名称 private String nameTest; //测试名称规范 private Test test; //测试对象 public String getName() { return namemethod; } public void setName(String name) { System.out.println("method: setName(String name)"); this.namemethod = name; } /** * 测试set时候执行那个方法、是否同时执行 */ public void setName(int name) { System.out.println("method: setName(int name)"); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNameTest() { return nameTest; } public void setNameTest(String nameTest) { this.nameTest = nameTest; } public Test getTest() { return test; } public void setTest(Test test) { this.test = test; } public String toString() { return "id:"+id+" name:"+namemethod; } }
不对之处,恳请指出。
--------------------------------------------------------------------------
交流群:81552084
--------------------------------------------------------------------------
发表评论
-
判断字符串包含的数量
2014-03-18 15:02 1561方法一: String str = "12312 ... -
POJO中使用int 还是 Integer??
2012-10-09 09:46 0我的选择是包装类好!原因如下: 1。所有的sql使用的默认类型 ... -
PO、VO、DTO、POJO
2012-08-23 16:16 0PO :persistant object持久对象,可以看成是 ... -
JAVA方法重载
2012-08-22 18:25 1103概念性的基础、需要记住。 原文:http://www.fund ... -
Filter(过滤器)简介
2012-08-14 15:49 1182Filter(过滤器)简介 Filter ... -
break continue 用法
2012-08-03 17:56 865单独使用的时候: break 中断本层循环 conti ... -
String、java.util.Date、java.sql.Date、java.sql.Timestamp互相转换
2012-07-12 19:26 1107import java.text.DateFormat; ... -
jar包查询网站
2012-05-22 16:42 966java jar包查询 根据类查询所在的java包 http ... -
session removeAttribute和invalidate方法
2012-04-10 15:38 1589removeAttribute存在session里的值没用了, ... -
介绍设置Session失效的几种方法
2012-03-31 12:21 724http://www.iteye.com/topic/1105 ... -
LinkedHashMap 和 HashMap的区别之一
2012-03-28 16:46 1029LinkedHashMap 和 HashMap的区别之一 H ... -
getResourceAsStream的用法
2012-03-16 16:00 1168首先,Java中的getResourceAsStream有以下 ... -
The type XXX cannot be resolved. It is indirectly referenced from required .clas
2012-03-16 13:24 1298http://www.cnitblog.com/wjw/arc ... -
对BigDecimal常用方法的归类
2012-03-15 14:08 907忘记了谁总结的 见谅。 import java.mat ... -
Set List remove方法 例子一个
2012-03-09 16:54 823public class ListSetTest { ... -
返回值, null或者空对象 (待整理)
2012-02-21 13:28 949个人习惯返回一个空对象、这样避免了空指针判断 返回empty ... -
indexOf
2012-02-21 11:13 850indexOf(int ch) 【 indexOf( ... -
java中比较数组元素大小
2012-02-20 15:55 3521比较数组 Arrays类提供了 ... -
java处理列转行
2012-02-20 15:52 4656Map<String, Map<String ... -
字符串截取、(待整理)
2012-02-10 10:53 688程序中难免都会用到、顺便整理一下 1、就去“_”之前的字符串 ...
相关推荐
在给定的标题“通过java反射实现map与bean之间互转”中,我们要探讨的是如何利用Java反射机制将Map对象转换为Java Bean对象,以及反过来,将Java Bean对象转换为Map对象。这个过程在数据处理和序列化中非常常见。 ...
`mapToBean`方法接受一个Map和目标Bean的Class对象,首先检查参数是否有效,然后创建一个新的Bean实例,遍历Map中的每一个键值对,通过反射找到Bean中对应的Field,设置其可访问,最后调用`set()`方法设置属性值。...
通过`DYNC_Object.java`的示例,我们可以学习如何利用反射来实现bean的`set`和`get`操作,这为我们提供了更大的程序设计自由度,使得代码能够适应不断变化的需求。理解并熟练掌握这一技术,对于提升Java开发能力非常...
Map<String, Object> map = new HashMap<>(); Class<?> clazz = bean.getClass(); for (Field field : clazz.getDeclaredFields()) { field.setAccessible(true); map.put(field.getName(), field.get(bean)); ...
xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...
myBean.getClass().getMethod("set" + key.toString().substring(0, 1).toUpperCase() + key.toString().substring(1), beanMap.get(key).getClass()).invoke(myBean, beanMap.get(key)); } ``` 此外,提供的`...
1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> 这个别名...
Java基础将Bean属性值放入Map中的实例 Java基础将Bean属性值放入Map中的实例是指将Java对象的属性值以属性名称为键,存储到Map中的简单实现。该实现包括自身属性及从父类继承得到的属性。 Java类型的getField[s]...
基于Java反射的map自动装配JavaBean工具类设计示例代码 标题 :"基于Java反射的map自动装配JavaBean工具类设计示例代码" 在 Java 开发中,经常需要将 Map 对象自动装配到 JavaBean 对象中,例如在使用 MyBatis 时...
`BeanUtilities`就属于这个库中的一个类,它提供了许多方法来帮助我们方便地操作Java Bean,例如复制Bean的属性、设置和获取属性值等。这个库依赖于`commons-collections.jar`,因为BeanUtils在处理Bean时会用到一些...
将List集合中的map对象转为List<对象>形式需要使用Java的反射机制和BeanUtils工具类。 下面是将List集合中的map对象转为List<对象>形式的实例代码: 首先,需要定义一个EntityBean类,该类中包含了两个方法:parse...
根据业务需求,我们需要将一个容器 `List<Bean>` 按照一定的字段进行分组,分组过后的值为特定的 BEAN 里面的属性。我们可以自定义一个 Collector 来满足这个需求。 首先,我们需要定义一个 Collector 接口的实现类...
此外,`getProperty()`和`setProperty()`方法分别用于读取和设置Bean的属性值,这些方法可以自动处理类型转换,使得代码更具可读性和可维护性。 在BeanUtils 1.8.0中,还包含了对Java反射API的封装,使得开发者可以...
Person person = runner.query(conn, "SELECT * FROM person WHERE id = 1", new BeanHandler<>(Person.class)); System.out.println(person.getName()); } catch (Exception e) { e.printStackTrace(); } ...
在本篇文章中,我们将深入探讨如何利用XPath来解析XML文件,并且会提及如何通过XPath操作Map集合,从而避免过多地生成Java Bean类。 首先,理解XML文档的结构至关重要。XML是一种标记语言,用于存储数据,其结构...
二、利用反射将结果集封装成为对象或者集合 为了将结果集封装成为对象或者集合,我们可以使用 Java 反射机制。下面是一个简单的示例代码: ```java package coral.base.util; import java.beans....
- **自定义get()和set()方法**:可以指定如何读取和设置属性值。 - **引用复制和自我映射**:支持将源对象本身作为目标对象进行映射。 - **超类映射**:如果源对象和目标对象具有共同的父类,则可以定义超类映射规则...
3. **属性操作**:`setProperty()`和`getProperty()`方法分别用于设置和获取Java Bean的属性值。`populate()`方法则可以批量设置对象的属性值,通常用于从请求参数填充Bean对象。 4. **类型转换**:`ConvertUtils`...