根据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.8.0-sources.jar`:这个文件包含了`1.8.0`版本的源代码,对于开发者来说是极其宝贵的资源,可以通过阅读源码理解内部实现,学习如何优雅地处理Bean操作,甚至进行二次开发。 4. **使用场景...
`commons-beanutils-1.7.0`是Apache Commons项目中的一个子项目,主要提供了一组用于操作Java Bean的工具类。...在学习和使用过程中,理解其工作原理以及如何正确使用它的各种方法,将有助于提升开发效率。
Apache Common API 是一系列由Apache软件基金会开发的Java库,这些库提供了各种实用工具和功能,以简化编程任务。本资源包含五个子项目的主要API文档,它们分别是BeanUtils、Collections、Configuration、Lang和...
"apache-common最全的源码" 提供了该项目的完整源代码,这对于开发者来说是一份宝贵的资源,可以深入理解其实现机制,学习优秀的编程实践,以及进行二次开发或定制。 Apache Commons 包含了多个模块,每个模块都有...
4. `common`库:这可能包含了Apache Commons库,如Commons BeanUtils、Collections、IO等。这些库提供了实用工具类和功能,帮助开发者更方便地处理Java对象、集合、输入/输出等任务。 学习这些库的意义在于: - **...
`BeanUtils.copyProperties()`的源码是一个很好的学习资源,因为它展示了如何使用反射和异常处理来实现通用的功能。通过阅读源码,开发者可以理解其工作原理,这对于优化性能或者自定义复制逻辑时非常有帮助。 至于...
1. **common-image-3.1.1.jar**:这是用于图像处理的库,提供了图像读取、转换和预处理的功能,对于处理图像数据集至关重要,特别是在深度学习中进行计算机视觉任务时。 2. **datavec-hadoop-0.9.1.jar**:Datavec...
学习Jakarta Commons的Cookbook可以帮助开发者提高代码的效率和可维护性,同时减少重复代码的编写。通过深入理解和实践这些组件,开发者可以更好地应对各种开发挑战,提升自己的Java编程技能。 在实际开发中,...
### Apache Commons Lang 概述 #### 一、Commons-Lang简介 Commons-Lang是Apache Commons项目下的一个子项目,旨在提供一系列实用且高效的基础工具类,这些工具类能够帮助开发者更便捷地进行Java应用的开发。...
5. **Commons Beanutils**:简化了 JavaBeans 的操作,提供了一种方式来反射地操作对象属性,以及类型转换机制。它可以用来动态地设置或获取对象属性,无需显式调用 getter 或 setter 方法。 6. **Commons Codec**...
2. **commons-beanutils-1.8.0-bin.zip**:Apache Commons BeanUtils库,简化了JavaBean对象的操作,提供了一种简单的方式来访问和操作属性,包括自动类型转换和属性的复制。 3. **commons-betwixt-0.8.zip**:这个...
此外,"common包"在描述中被提及,这可能指的是Apache Commons BeanUtils和Validator Commons,这两个库提供了额外的功能,如Bean属性的复制和验证辅助功能。BeanUtils帮助将表单数据绑定到Java对象,而Validator ...
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 是一个重要的Java库,它是Spring框架的核心组件,对于任何想学习或使用Spring框架的开发者来说都是必不可少的。Spring框架是企业级Java应用开发的首选框架,它提供了一种全面的编程和配置模型,可以...
Spring框架经常利用这些工具类来增强其功能,例如,Apache Commons BeanUtils帮助进行对象属性的复制,Collections库提供了对集合操作的扩展,Io库则方便文件的读写操作。 4. OpenJDK:OpenJDK是Java Development ...
### JDK安装配置详解 #### 一、安装与配置所需工具 ...对于这些命令的学习和使用,建议参考官方文档 [JDK Documentation](https://docs.oracle.com/javase/8/docs/),里面提供了详细的命令选项和示例。
7. **Commons-beanutils**:通过反射和内省操作JavaBean,简化属性的获取和设置。 8. **Commons-codec**:包含多种编码算法,如Base64、Hex、URL编码等。 9. **Commons-collections**:提供了对Java集合框架的扩展...
<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 ${...