`
rethink
  • 浏览: 16360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

学习Common BeanUtils

阅读更多

根据Common BeanUtils的用户指南学习了很多有用的工具类.

参考:http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/package-summary.html#package_description

 

1. 属性的存取

简单式:

PropertyUtils.getSimpleProperty(Object bean, String name)
PropertyUtils.setSimpleProperty(Object bean, String name, Object value)


索引式:
PropertyUtils.getIndexedProperty(Object bean, String name)
PropertyUtils.getIndexedProperty(Object bean, String name, int index)
PropertyUtils.setIndexedProperty(Object bean, String name, Object value)
PropertyUtils.setIndexedProperty(Object bean, String name, int index, Object value)

Map式:

PropertyUtils.getMappedProperty(Object bean, String name)
PropertyUtils.getMappedProperty(Object bean, String name, String key)
PropertyUtils.setMappedProperty(Object bean, String name, Object value)
PropertyUtils.setMappedProperty(Object bean, String name, String key, Object value)

 

嵌套式:
PropertyUtils.getNestedProperty(Object bean, String name)
PropertyUtils.setNestedProperty(Object bean, String name, Object value)

 

通用式:
PropertyUtils.getProperty(Object bean, String name)
PropertyUtils.setProperty(Object bean, String name, Object value)

 

发现通用式最方便,可以替代上面所有的方式(搞不懂为啥还要弄那么多)。

举例:

//简单式
System.out.println(PropertyUtils.getProperty(employee1, "lastName"));

//索引式
System.out.println(PropertyUtils.getProperty(employee1,"addr[0].city"));

//Map式
PropertyUtils.setProperty(employee1, "telphone(tel)", "test1");
System.out.println(PropertyUtils.getProperty(employee1, "telphone(tel)"));

//嵌套式
String address = (String) PropertyUtils.getProperty(employee1, "address.addr");
System.out.println(address);

 

2. 动态Beans

基本式:(需要先定义属性然后才能使用,不推荐)

BasicDynaBean and BasicDynaClass

 

包装ResultSet式:(必须打开数据库连接可以使用,不推荐)

ResultSetDynaClass

 

包装RowSet式:(可以不用打开连接使用,推荐)

RowSetDynaClass

举例:

		try {
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
			Connection conn = DriverManager.getConnection(
							"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=java",
							"sa", "sa");
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery("select code,name from role");
			RowSetDynaClass rsdc = new RowSetDynaClass(rs);
			rs.close();
			stmt.close();
		
			List rows = rsdc.getRows();
			for (Object object : rows) {
				DynaBean row = (DynaBean) object;
			    System.out.println("Role code is " +
			                       row.get("code") +
			                       " and name is " + row.get("name"));
			}
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

懒加载式:(方便实用,重点推荐)

LazyDynaBean

举例:

LazyDynaBean ldb = new LazyDynaBean();
ldb.set("test1", "tt");
ldb.set("test2", null);
ldb.set("test3", new Employee());
System.out.println(ldb.get("test1"));
System.out.println(ldb.get("test2"));//null
System.out.println(ldb.get("test3"));//显示Employee.toString()信息

 并且也具有LazyDynaMap的功能。

 

3. 数据类型的转换

重点推荐BeanUtils.populate方法。

举例:

	    Address bean = new Address();
	    HashMap map = new HashMap();
	    map.put("zipCode1", "zipCode");
	    map.put("addr", new Long(1234));
	    map.put("city", "");
	    map.put("country", "country");
	    System.out.println(bean);
	    try {
			BeanUtils.populate(bean, map);
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    System.out.println(bean);

 常利用在action填充vo时。

 

在学习当中,发现了两位前辈的类似总结,写得很好。

http://www.blogjava.net/sean/articles/Jakarta_Commons_Notes.html

http://calvin.iteye.com/blog/92035

省了我不少时间,呵呵。

 

分享到:
评论

相关推荐

    commons-beanutils (1.7.0 -1.9.2)6个

    - `commons-beanutils-1.8.0-sources.jar`:这个文件包含了`1.8.0`版本的源代码,对于开发者来说是极其宝贵的资源,可以通过阅读源码理解内部实现,学习如何优雅地处理Bean操作,甚至进行二次开发。 4. **使用场景...

    commons-beanutils-1.7.0

    `commons-beanutils-1.7.0`是Apache Commons项目中的一个子项目,主要提供了一组用于操作Java Bean的工具类。...在学习和使用过程中,理解其工作原理以及如何正确使用它的各种方法,将有助于提升开发效率。

    apache common api(chm)

    Apache Common API 是一系列由Apache软件基金会开发的Java库,这些库提供了各种实用工具和功能,以简化编程任务。本资源包含五个子项目的主要API文档,它们分别是BeanUtils、Collections、Configuration、Lang和...

    apache-common最全的源码

    "apache-common最全的源码" 提供了该项目的完整源代码,这对于开发者来说是一份宝贵的资源,可以深入理解其实现机制,学习优秀的编程实践,以及进行二次开发或定制。 Apache Commons 包含了多个模块,每个模块都有...

    jsf+jstl+common 学习JSF必用jar包

    4. `common`库:这可能包含了Apache Commons库,如Commons BeanUtils、Collections、IO等。这些库提供了实用工具类和功能,帮助开发者更方便地处理Java对象、集合、输入/输出等任务。 学习这些库的意义在于: - **...

    common(bean_之音属性复制).zip

    `BeanUtils.copyProperties()`的源码是一个很好的学习资源,因为它展示了如何使用反射和异常处理来实现通用的功能。通过阅读源码,开发者可以理解其工作原理,这对于优化性能或者自定义复制逻辑时非常有帮助。 至于...

    深度学习Java库1

    1. **common-image-3.1.1.jar**:这是用于图像处理的库,提供了图像读取、转换和预处理的功能,对于处理图像数据集至关重要,特别是在深度学习中进行计算机视觉任务时。 2. **datavec-hadoop-0.9.1.jar**:Datavec...

    jakarata common

    学习Jakarta Commons的Cookbook可以帮助开发者提高代码的效率和可维护性,同时减少重复代码的编写。通过深入理解和实践这些组件,开发者可以更好地应对各种开发挑战,提升自己的Java编程技能。 在实际开发中,...

    Commons培训

    ### Apache Commons Lang 概述 #### 一、Commons-Lang简介 Commons-Lang是Apache Commons项目下的一个子项目,旨在提供一系列实用且高效的基础工具类,这些工具类能够帮助开发者更便捷地进行Java应用的开发。...

    Apache Commons source

    5. **Commons Beanutils**:简化了 JavaBeans 的操作,提供了一种方式来反射地操作对象属性,以及类型转换机制。它可以用来动态地设置或获取对象属性,无需显式调用 getter 或 setter 方法。 6. **Commons Codec**...

    apache.commons所有jar包

    2. **commons-beanutils-1.8.0-bin.zip**:Apache Commons BeanUtils库,简化了JavaBean对象的操作,提供了一种简单的方式来访问和操作属性,包括自动类型转换和属性的复制。 3. **commons-betwixt-0.8.zip**:这个...

    struts_注册验证_Validator框架

    此外,"common包"在描述中被提及,这可能指的是Apache Commons BeanUtils和Validator Commons,这两个库提供了额外的功能,如Bean属性的复制和验证辅助功能。BeanUtils帮助将表单数据绑定到Java对象,而Validator ...

    xfire 初体验

    8. commons-beanutils-1.7.0.jar - Apache Commons BeanUtils,提供了方便的JavaBean操作。 9. jaxb-api-2.0.jar - JAXB API,包含了JAXB的接口定义。 10. commons-httpclient-3.0.jar - Apache Commons HttpClient...

    spring 2.0.jar

    Spring 2.0.jar 是一个重要的Java库,它是Spring框架的核心组件,对于任何想学习或使用Spring框架的开发者来说都是必不可少的。Spring框架是企业级Java应用开发的首选框架,它提供了一种全面的编程和配置模型,可以...

    spring项目

    Spring框架经常利用这些工具类来增强其功能,例如,Apache Commons BeanUtils帮助进行对象属性的复制,Collections库提供了对集合操作的扩展,Io库则方便文件的读写操作。 4. OpenJDK:OpenJDK是Java Development ...

    JDK安装配置非常详细的说明

    ### JDK安装配置详解 #### 一、安装与配置所需工具 ...对于这些命令的学习和使用,建议参考官方文档 [JDK Documentation](https://docs.oracle.com/javase/8/docs/),里面提供了详细的命令选项和示例。

    java常用第三方软件包大全_.docx

    7. **Commons-beanutils**:通过反射和内省操作JavaBean,简化属性的获取和设置。 8. **Commons-codec**:包含多种编码算法,如Base64、Hex、URL编码等。 9. **Commons-collections**:提供了对Java集合框架的扩展...

    Springboot创建子父工程过程图解

    <commons.beanutils.version>1.9.3</commons.beanutils.version> <commons.codec.version>1.11 <guava.version>19.0 <groupId>org.springframework.boot <artifactId>spring-boot-starter-tomcat ${...

Global site tag (gtag.js) - Google Analytics