使用BeanUtils操作Bean属性
package com.wzh.test.beanutils; import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import org.junit.Test; //使用BeanUtils操作Bean属性(第三方)
public class Demo1 { @Test
public void test1() throws IllegalAccessException,
InvocationTargetException {
Person p = new Person();
BeanUtils.setProperty(p, "name", "victor"); System.out.println(p.getName());
} @Test
public void test2() throws IllegalAccessException,
InvocationTargetException {
Person p = new Person();
// 自动将String转为int 支持8种基本数据类型
BeanUtils.setProperty(p, "age", "23");
// 默认不支持时间转换
BeanUtils.setProperty(p, "Birthday", "2012-3-1");
System.out.println(p.getAge());
System.out.println(p.getBirthday());
} @Test
public void test3() throws IllegalAccessException,
InvocationTargetException { // 为了让日期赋到Bean的Birthday属性上,我们给BeanUtils注册一个日期转换器(敲入代码未起作用,需检查)
// 方法1.
ConvertUtils.register(new Converter() {
@Override
public Object convert(Class type, Object value) {
if (value == null)
return null; if (!(value instanceof String)) {
System.out.println("不是日期类型");
throw new ConversionException("不是日期类型");
} String str = (String) value;
if (str.trim().equals(str)) {
return null;
} SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
return df.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);// 异常链不能断
}
}
}, Date.class); // ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person p = new Person();
// 自动将String转为int 支持8种基本数据类型 BeanUtils.setProperty(p, "birthday", "2012-12-12");
System.out.println(p.getBirthday());
} @Test
public void test4() throws IllegalAccessException,
InvocationTargetException { Map map = new HashMap();
map.put("name", "aa");
map.put("birthday", "2012-1-1"); ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person p = new Person();
// 自动将String转为int 支持8种基本数据类型 BeanUtils.populate(p, map);//用Map集合中的值填充到Bean的属性
System.out.println(p.getBirthday());
}
}
package com.wzh.test.beanutils;
import java.util.Date;
public class Person {
public Person() {
super();
// TODO Auto-generated constructor stub
}
private String name;
private String age;
private Date birthday;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
使用BeanUtils操作Bean属性的更多相关文章
- beanUtils操作bean的属性
beanUtils操纵bean属性: 需要jar包commons-beanutils-x.x.x.jar 同时commons-beanutils-x.x.x.jar需要commons-loggi ...
- Apache Commons Beanutils 一 (使用PropertyUtils访问Bean属性)
BeanUtils简要描述 beanutils,顾名思义,是java bean的一个工具类,可以帮助我们方便的读取(get)和设置(set)bean属性值.动态定义和访问bean属性: 细心的话,会发 ...
- sql查询化繁为简 告别rs.getString("XX"),bean属性赋值setXX("XX")
一.在执行sql语句查询时候,查询的结果是set的map集合(ResultSet): 结果使用rs.getString("XX")获得对应属性的值,赋值到bean对象的相应的属性中 ...
- 一个Bean属性拷贝的工具类
package com.fpi.spring.qaepb.cps.util; import java.beans.IntrospectionException; import java.beans.P ...
- 【框架】利用Spring的BeanPostProcessor来修改bean属性
一.BeanPostProcessor是什么?什么时候触发?可以用来做什么? 1.它是什么? 首先它是一个接口,定义了两个方法: public interface BeanPostProcessor ...
- 在Spring Bean实例过程中,如何使用反射和递归处理的Bean属性填充?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! <Spring 手撸专栏>目录 [x] 第 1 章:开篇介绍,我要带你撸 Spri ...
- spring实战一:装配bean之注入Bean属性
内容参考自spring in action一书. 创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. 1. 创建spring配置 spring是一个基于容器的框架.如果没有配置spri ...
- 依赖注入Bean属性
一.Bean属性依赖注入 对于类成员变量,注入方式有三种 •构造函数注入 •属性setter方法注入 •接口注入 Spring支持前两种 1.构造函数 属性注入 使用构造方法注入,在Spring配置文 ...
- JavaScript 节点操作Dom属性和方法(转)
JavaScript 节点操作Dom属性和方法 一些常用的dom属性和方法,列出来作为手册用. 属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储 ...
随机推荐
- 让边框和文本一样高,不受line-height影响,可以使用padding,padding可以用于行内元素
如果设置了,display:inline-block;边框大小至少和行高一样.这样就可能比文字高.
- ABBYY哪些工具和命令可以进行区域校正
ABBYY FineReader OCR文字识别软件在运行文档识别过程前,会对文档的逻辑结构进行分析,并检测包含文本.图片.表格.条码的区域.程序将通过该分析来确定区域和识别顺序.此信息有助于重建原始 ...
- 027. asp.net中数据绑定控件之 GridView控件
GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ...
- PostgreSQL数据的导出导入
PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres -f mydatabase.sql mydatabase 导入数据时首先创 ...
- oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性
学习:http://www.cnblogs.com/william-lee/archive/2010/10/20/1856261.html 之前因为安装的是windows server 2008 r2 ...
- Hibernate3回顾-3-Session管理
3.Session管理 仅为个人理解.请指正 3.1背景 由于Configuration的创建耗费系统的资源.所以有必要只将Configuration实例化一次,之后通过SessionFactory获 ...
- jQuery点击图片弹出放大可拖动图片查看
CSS代码: .popup-bigic { position: absolute; ; ; background: #eee; overflow: hidden; ; } .popup-bigic . ...
- [Hibernate] - Criteria Select
使用Hibernate的Criteria做查询. 参考文档: http://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/html/querycri ...
- 【jmeter】元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- Silverlight开源框架SL提供便捷的二次开发银光框架
Silverlight开发框架SilverFrame欢迎咨询 基于Silverlight4.0开发,兼容Silverlight 5.0,SQLServer2005数据库.WCF: 本框架有清爽的前端界 ...