BeanUtils 读取数据
前两篇文章都是关于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 读取数据的更多相关文章
- struts2中从后台读取数据到<s:select>
看到网上好多有struts2中从后台读取数据到<s:select>的,但都 不太详细,可能是我自己理解不了吧!所以我自己做了 一个,其中可能 有很多不好的地方,望广大网友指出 结果如图 p ...
- [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...
- ubuntu server 12.04U盘安装,提示无法挂载安装光盘或光盘读取数据出错
今天用Ultraiso将Ubuntu server 12.04 刻入U盘中安装系统,中间提示错误:1.检测不到cdrom(即U盘没有挂载上):2.从光盘中读取数据出错.问题如下图所示: 上网搜了下解决 ...
- MySQL数据库中tinyint类型字段读取数据为true和false
今天遇到这么一个问题,公司最近在做一个活动,然后数据库需要建表,其中有个字段是关于奖励发放的状态的字段,结果读取出来的值为true 一.解决读取数据为true/false的问题 场景: 字段:stat ...
- My Game --文件读取数据
My Game --线段数据 中说到背景的绘制由贝赛尔曲线生成线段,用 DrawNode 画多边形,同时一张背景有两座山,一座山有两条以上贝赛尔曲线保存,用了嵌套的数据类:Bezier,LineLay ...
- Java—从文件中读取数据
1.FileInputStream() // 构建字节输入流对象,参数为文件名 FileInputStream fin = new FileInputStream("message" ...
- 10天学会phpWeChat——第三天:从数据库读取数据到视图
在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...
- 用EXCEL内嵌的Visual Basic for Application 编程,通过 UGSimple USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据
现在市场上有很多中USB-GPIB 控制器,或叫 USB 转GPIB链接线. 每种GPIB控制器都有它的 函数库(dll库).各种GPIB 控制器的价钱插别很大.这里以一种价钱较便宜的USB-GPIB ...
- winform 异步读取数据 小实例
这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...
随机推荐
- Mysql之库表操作(胖胖老师)
SQL概念:结构化查询语言(SQL = Structured Query Language),也是一种编程语言(数据库查询和程序设计语言),可以用于数据的存取及查询,更新,管理关系型数据库系统ps: ...
- 使用Nwjs开发桌面应用体验
之前一直用.net开发桌面应用,最近由于公司需要转为nodejs,但也是一直用nodejs开发后台应用,网站,接口等.近期,需要开发一个客户端,想着既然nodejs号称全栈,就试一下开发桌面应用到底行 ...
- [HNOI2016]最小公倍数
题目描述 给定一张N个顶点M条边的无向图(顶点编号为1,2,...,n),每条边上带有权值.所有权值都可以分解成2a∗3b2^a*3^b2a∗3b 的形式. 现在有q个询问,每次询问给定四个参数u.v ...
- [SHOI2008]小约翰的游戏John
Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...
- Set 集合
[题目描述]现在给你一些连续的整数,它们是从 A 到 B 的整数.一开始每个整数都属于各自的集合,然后你需要进行如下操作:每次选择两个属于不同集合的整数,如果这两个整数拥有大于等于 P 的公共质因数, ...
- bzoj 2560: 串珠子
Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...
- VK-Cup 2017 qualification 1
VK-Cup,cf里面只有切成俄文才能看到,题目也都是俄文的(百度翻译成英文和中文). 两人组队参赛的,赛期1天,乐多赛赛制(和时间基本无关,交上去挂了扣分).这次是第一场资格赛. 这次又和ditol ...
- 【CodeVs 6128 Lence的方块们】
·希望除了内部人员以外能有人通过这道题,因为这是大米饼第一次改编的题 ·我所见到的"本题原版"的题解也很少,搜索一下应该是: #include<stdio.h> #in ...
- [Project] Simulate HTTP Post Request to obtain data from Web Page by using Python Scrapy Framework
1. Background Though it's always difficult to give child a perfect name, parent never give up trying ...
- Android.mk 详解
Android中增加本地程序或者库,这些程序与其所在路径没有关系,只和它们的Android.mk有关系. Android.mk与普通的makefile略有不同,Android.mk具有统一的写法,主要 ...