前两篇文章都是关于setProperty的,下面来说一个关于getProperty 的小案例。如下:

MyClass.java

package beanutils;

public class MyClass {

    private String classname;

    public String getClassname() {
        return classname;
    }

    public void setClassname(String classname) {
        this.classname = classname;
    }

}

MyBean.java

package beanutils;

import java.util.Date;

public class MyBean {

    private String name;
    private int age;
    private Date birthday;
    private boolean isAlive;

    private MyClass myclass;

    public MyClass getMyclass() {
        return myclass;
    }

    public void setMyclass(MyClass myclass) {
        this.myclass = myclass;
    }

    public MyBean() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public boolean isAlive() {
        return isAlive;
    }

    public void setAlive(boolean isAlive) {
        this.isAlive = isAlive;
    }

}

AdvanceBean.java

package beanutils;

import java.util.List;

/**
 * 提供了集合的形式获取
 *
 * @author Administrator
 *
 */
public class AdvanceBean {

    private List list;

    private MyClass myclass;

    public MyClass getMyclass() {
        return myclass;
    }

    public void setMyclass(MyClass myclass) {
        this.myclass = myclass;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

}

TestAdvanceBean.java

package beanutils;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test;

public class TestAdvanceBean {

    /**
     * 简单的测试基本数据类型的数据的getProperty方法
     *
     * @throws Exception
     */
    @Test
    public void test1() throws Exception {

        String name = "Molly";
        int age = 20;
        Boolean isAlive = true;
        MyBean myBean = new MyBean();
        BeanUtils.setProperty(myBean, "name", name);
        BeanUtils.setProperty(myBean, "age", age);

        System.out.println("Name: " + BeanUtils.getProperty(myBean, "name"));
        System.out.println("Age: " + BeanUtils.getProperty(myBean, "age"));

    }

    /**
     * 对于boolean数据类型,由于其setter,getter方法不符合标准,所以不能正确的获得输出结果
     *
     * java.lang.NoSuchMethodException: Unknown property 'isAlive' on class
     * 'class beanutils.MyBean'
     *
     * @throws Exception
     */
    @Test
    public void test2() throws Exception {
        MyBean myBean = new MyBean();
        boolean isAlive = false;
        BeanUtils.setProperty(myBean, "isAlive", isAlive);

        System.out.println("Name: " + BeanUtils.getProperty(myBean, "name"));
        System.out.println("Age: " + BeanUtils.getProperty(myBean, "age"));
        System.out.println("IsAlive: " + BeanUtils.getProperty(myBean, "isAlive"));
    }

    /**
     * 对Date数据类型<br>
     * 进行测试 使用内置的转换器
     *
     * @throws Exception
     */
    @Test
    public void test3() throws Exception {
        String birthday = "2016-07-05";
        MyBean myBean = new MyBean();
        ConvertUtils.register(new DateLocaleConverter(), Date.class);
        BeanUtils.setProperty(myBean, "birthday", birthday);
        System.out.println(BeanUtils.getProperty(myBean, "birthday"));
    }

    /**
     * 对Date数据类型<br>
     * 进行测试 使用z自定义的转换器
     *
     * @throws Exception
     */
    @Test
    public void test4() throws Exception {
        String birthday = "2016-07-05 11:59:59";
        MyBean myBean = new MyBean();
        ConvertUtils.register(new Converter() {

            @Override
            public <T> T convert(Class<T> type, Object value) {
                try {
                    String data = (String) value;
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    return (T) sdf.parse(data);
                } catch (Exception e) {
                    throw new RuntimeException(e.getMessage());
                }
            }

        }, Date.class);
        BeanUtils.setProperty(myBean, "birthday", birthday);
        System.out.println(BeanUtils.getProperty(myBean, "birthday"));
    }

    /**
     * 测试 组合类中的property获取 <br>
     * 支持内嵌类数据的读取,但是不支持内嵌类的直接的读取
     *
     * @throws Exception
     */
    @Test
    public void test5() throws Exception {

        MyClass myclass = new MyClass();
        myclass.setClassname("软件学院软件开发与测试1414班");
        MyBean myBean = new MyBean();
        BeanUtils.setProperty(myBean, "myclass", myclass);
        System.out.println(BeanUtils.getProperty(myBean, "myclass.classname"));
    }

    /**
     * 对于list等数据的getProperty测试<br>
     *
     * 默认获得第一个列表项的内容,也可以指定下标进行内容的读取
     *
     * @throws Exception
     */
    @Test
    public void test6() throws Exception {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < 7; i++) {
            list.add("列表项" + i);
        }
        AdvanceBean advanceBean = new AdvanceBean();
        BeanUtils.setProperty(advanceBean, "list", list);
        System.out.println(BeanUtils.getProperty(advanceBean, "list").toString());
        System.out.println(BeanUtils.getProperty(advanceBean, "list[1]").toString());
        System.out.println(BeanUtils.getProperty(advanceBean, "list[6]").toString());

    }

}

总结

代码很详细,就不再废话了。

最后一点需要提醒的是,导好包!导对包!思路很重要!

BeanUtils 读取数据的更多相关文章

  1. struts2中从后台读取数据到<s:select>

    看到网上好多有struts2中从后台读取数据到<s:select>的,但都 不太详细,可能是我自己理解不了吧!所以我自己做了 一个,其中可能 有很多不好的地方,望广大网友指出 结果如图 p ...

  2. [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据

    继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...

  3. ubuntu server 12.04U盘安装,提示无法挂载安装光盘或光盘读取数据出错

    今天用Ultraiso将Ubuntu server 12.04 刻入U盘中安装系统,中间提示错误:1.检测不到cdrom(即U盘没有挂载上):2.从光盘中读取数据出错.问题如下图所示: 上网搜了下解决 ...

  4. MySQL数据库中tinyint类型字段读取数据为true和false

    今天遇到这么一个问题,公司最近在做一个活动,然后数据库需要建表,其中有个字段是关于奖励发放的状态的字段,结果读取出来的值为true 一.解决读取数据为true/false的问题 场景: 字段:stat ...

  5. My Game --文件读取数据

    My Game --线段数据 中说到背景的绘制由贝赛尔曲线生成线段,用 DrawNode 画多边形,同时一张背景有两座山,一座山有两条以上贝赛尔曲线保存,用了嵌套的数据类:Bezier,LineLay ...

  6. Java—从文件中读取数据

    1.FileInputStream() // 构建字节输入流对象,参数为文件名 FileInputStream fin = new FileInputStream("message" ...

  7. 10天学会phpWeChat——第三天:从数据库读取数据到视图

    在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...

  8. 用EXCEL内嵌的Visual Basic for Application 编程,通过 UGSimple USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据

    现在市场上有很多中USB-GPIB 控制器,或叫 USB 转GPIB链接线. 每种GPIB控制器都有它的 函数库(dll库).各种GPIB 控制器的价钱插别很大.这里以一种价钱较便宜的USB-GPIB ...

  9. winform 异步读取数据 小实例

    这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...

随机推荐

  1. [COGS 1799][国家集训队2012]tree(伍一鸣)

    Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2 ...

  2. NOIP 2015运输计划

    题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...

  3. [SDOI2005]反素数

    题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6 ...

  4. 【网络流】【BZOJ1001】狼抓兔子

    继续网络流的学习.... 题意简析:就是给你张图,叫你求最小割. 解题思路:最小割=最大流,按题意见图跑一次就好了. 附代码: #include<cstdio> #include<i ...

  5. 51nod 1035:最长的循环节

    1035 最长的循环节 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题   正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求< ...

  6. hdu 5489(LIS最长上升子序列)

    题意:一个含有n个元素的数组,删去k个连续数后,最长上升子序列        /*思路参考GoZy 思路: 4 2 3 [5 7 8] 9 11 ,括号表示要删掉的数, 所以  最长上升子序列  = ...

  7. [bzoj1187][HNOI2007]神奇游乐园

    来自FallDream的博客,未经允许,请勿转载,谢谢, 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一 ...

  8. Python中模块之sys的功能介绍

    sys模块的功能介绍 1. sys的变量 argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.arg ...

  9. Mysql--执行计划 Explain

    0 介绍 0.1 是什么 使用 Explain 关键字可以模拟优化器执行 Sql 查询语句,从而知道 Mysql 是如何处理 Sql 的. 0.2 用法 Explain + Sql语句 0.3 执行计 ...

  10. 以太坊区块链Java(EthereumJ)学习笔记:概述

    本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...