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

Common BeanUtils

    博客分类:
  • java
阅读更多
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

省了我不少时间,呵呵。
推荐使用cglib的beancopier替代beanutil做copy工作
LazyDynaBean 在 Struts 1.3 开始也用,免去了声明动态 Formbean 的属性声明。
分享到:
评论

相关推荐

    commons-beanutils-1.9.4-API文档-中英对照版.zip

    赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...

    Commons-beanutils jar包

    Commons-beanutils jar包,比较新希望对大家能有帮助

    common-beanutils和common-logging

    common-beanutils下载地址:http://commons.apache.org/proper/commons-beanutils/ common-logging现在地址:http://commons.apache.org/proper/commons-logging/

    commons-beanutils (1.7.0 -1.9.2)6个

    `commons-beanutils` 是Apache软件基金会开发的一个Java库,主要提供了一系列用于操作Java Bean的工具函数。这个库简化了对Java对象属性的访问,使得开发者可以方便地进行Bean对象的属性设置、获取以及拷贝等工作,...

    commons-beanutils-1.9.4.jar.zip

    Apache Commons BeanUtils是Java开发中的一个实用库,它提供了对JavaBeans属性的简便操作。这个库简化了在对象之间复制属性、处理集合以及调用JavaBean方法的过程。在这个"commons-beanutils-1.9.4.jar.zip"压缩包中...

    commons-beanutils-1.9.4

    Apache Commons BeanUtils是Java开发中一个非常重要的工具库,它为开发者提供了大量便捷的JavaBean操作功能。在本文中,我们将深入探讨`commons-beanutils-1.9.4`这个版本,了解其核心功能、使用场景以及如何在项目...

    commons-beanutils

    《Apache Commons BeanUtils:深入解析与应用》 Apache Commons BeanUtils是Java开发中一个非常重要的工具库,它为处理JavaBeans提供了极大的便利。这个库的核心功能在于提供了一种简单、直观的方式来操作Java对象...

    commons-beanutils-1.8.0 jar包下载

    commons-beanutils-1.8.0 jar包: 1.commons-beanutils-1.8.0.jar 2.commons-beanutils-1.8.0-javadoc.jar 3.commons-beanutils-1.8.0-sources.jar 4.commons-beanutils-bean-collections-1.8.0.jar 5.commons-...

    commons-beanutils-1.8.3

    commons-beanutils-1.8.3.rar官方正版免费版,BeanUtils主要提供了对于JavaBean进行各种操作。 个包主要提供用于操作JavaBean的工具类,Jakarta-Common-BeanUtils的主要功能都在这个包里实现。

    commons-beanutils-1.7.0.jar-解决commons-beanutils和commons-collections重复类

    解决办法是把commons-beanutils中的org/apache/commons/collections删除,这里上传一个改好可以直接使用的。

    commons-beanutils-1.8.3-bin.tar.gz

    Apache Commons BeanUtils是Java开发中的一个实用工具库,主要用于处理JavaBeans对象的属性操作,极大地简化了JavaBean属性的读写工作。标题"commons-beanutils-1.8.3-bin.tar.gz"指的是Apache Commons BeanUtils ...

    beanutils-1.9.3-bin

    BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。...但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志工具来使用,这里我们同样使用Apache公司的common logging

    beanutils类

    这个包主要提供用于操作JavaBean的工具类,Jakarta-Common-BeanUtils的主要功能都在这个包里实现。

    commons-fileupload-1.0-beta-1.jar、commons-beanutils-1.8.3.jar

    Commons是Apache开放源代码组织中的一个Java子... 由于Fileupload子项目同时要用到另外一个项目commons-Beanutils,所以必须下载Beanutils,并将解压后的文件commons-beanutils.jar拷贝到{$TOMCAT}/common/lib目录下。

    commons-beanutils-1.7.0

    `commons-beanutils-1.7.0`是Apache Commons项目中的一个子项目,主要提供了一组用于操作Java Bean的工具类。这个版本是`BeanUtils`库的一个历史版本,它在Java社区中广泛使用,特别是在处理Java Bean属性的设置、...

    ruoyi-common_若依核心模块代码_

    为了保证输入数据的正确性,“ruoyi-common”可能包含数据验证组件,如 Apache Commons BeanUtils 或 JSR 303/JSR 349 Bean Validation,用于校验业务对象的属性。 8. **国际化与本地化**: 对于多语言支持,核心...

    Commons-beanutils.rar

    Apache Commons BeanUtils是Java开发中的一个实用工具库,它提供了对JavaBeans属性操作的强大功能,极大地简化了开发者在处理对象属性时的代码。这个压缩包"Commons-beanutils.rar"包含了从1.4到1.9的不同版本,这...

    beanUtils配套

    在Java开发领域,BeanUtils工具类库是Apache Commons项目中的一个重要组成部分,它提供了一系列便捷的方法来简化对象属性的设置和获取。"beanUtils配套"通常指的是Apache Commons BeanUtils与Apache Commons Logging...

Global site tag (gtag.js) - Google Analytics