博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内省—beanutils工具包
阅读量:6838 次
发布时间:2019-06-26

本文共 3570 字,大约阅读时间需要 11 分钟。

Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。

BeanUtils的作用:

1)支持String到8种基本数据类型的转换;

2)其他引用数据类型都需要注册转换器:ConvertUtils.register(Converter,Class);

public class Person {    private String name;    private String password;    private Integer age;    private Date birthday;    getter/setter}

 

采用beanutils设置属性

@Testpublic void test1() throws Exception {    Person person = new Person();    BeanUtils.setProperty(person, "name", "zhangsan");    System.out.println(person.getName());}

 

采用beanutils拷贝对象的属性(基本类型)

@Testpublic void test2() throws Exception {    String name = "zhangsan";    String password = "123";    String age = "34";    Person person = new Person();    BeanUtils.setProperty(person, "name", name);    BeanUtils.setProperty(person, "password", password);    BeanUtils.setProperty(person, "age", age);// 自动类型转换,只支持8种基本数据类型    System.out.println(person);}

 

采用beanutils拷贝对象的属性(非基本类型)

@Testpublic void test3() throws Exception {    String name = "zhangsan";    String password = "123";    String age = "34";    String birthday = "1980-09-05";    Person person = new Person();    BeanUtils.setProperty(person, "name", name);    BeanUtils.setProperty(person, "password", password);    BeanUtils.setProperty(person, "age", age);// 自动类型转换    BeanUtils.setProperty(person, "birthday", birthday); // 类型转换失败    System.out.println(person);}

为让Date能够赋值到birthday属性上,我们给beanutils注册一个日期转换器。

改进代码如下:

@Testpublic void test4() throws Exception {    String name = "zhangsan";    String password = "123";    String age = "34";    String birthday = "1980-09-05";    ConvertUtils.register(new Converter() {        @Override        public Object convert(Class type, Object value) {            if (value == null) {                return null;            }            if (!(value instanceof String)) {                throw new ConversionException("只支持String类型的转换!");            }            String str = (String) value;            if (null == str || "".equals(str.trim())) {                return null;            }            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");            try {                return format.parse(str);            } catch (ParseException e) {                throw new ConversionException(e);            }        }    }, Date.class);    Person person = new Person();    BeanUtils.setProperty(person, "name", name);    BeanUtils.setProperty(person, "password", password);    BeanUtils.setProperty(person, "age", age);// 自动类型转换    BeanUtils.setProperty(person, "birthday", birthday);     System.out.println(person);}

 

采用beanutils自带的日期类型转换器

@Testpublic void test5() throws Exception {    String name = "zhangsan";    String password = "123";    String age = "34";    String birthday = "1980-09-05";    ConvertUtils.register(new DateLocaleConverter(), Date.class);    Person person = new Person();    BeanUtils.setProperty(person, "name", name);    BeanUtils.setProperty(person, "password", password);    BeanUtils.setProperty(person, "age", age);// 自动类型转换    BeanUtils.setProperty(person, "birthday", birthday);     System.out.println(person);}

 

收集数据到map中,并通过beanutils拷贝到指定的对象中去

@Testpublic void test6() throws Exception {    Person person = new Person();    ConvertUtils.register(new DateLocaleConverter(), Date.class);    Map
map = new HashMap
(); map.put("name", "aa"); map.put("password", "123"); map.put("age", 23); map.put("birthday", "1980-09-05"); // 用map集合中的值,填充bean的属性, // 注意:属性名称必须要一致 BeanUtils.populate(person, map); System.out.println(person);}

 

转载地址:http://tzqkl.baihongyu.com/

你可能感兴趣的文章
三星GT-I9308 Galaxy SIII 移动定制机 root方法 (亲测可用)
查看>>
简洁SDK
查看>>
错误:无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限...
查看>>
使用for循环遍历文件
查看>>
大数据最清楚王宝强离婚事件到底有多热!
查看>>
container_of分析
查看>>
#define list_entry(ptr, type, member) \ container_of(ptr, type, member)
查看>>
openJDK之lambda——List的forEach如何实现的
查看>>
Exchange 2013部署系列之(十)信息权限保护RMS和Exchange 2013的整合
查看>>
配置Exchange OWA和Sharepoint网站单点登录
查看>>
tomcat7.0 安装启动之后localhost:8080页面进不去,提示错误500
查看>>
SpringMVC图片上传
查看>>
Scrapy 爬虫实例 抓取豆瓣小组信息并保存到mongodb中
查看>>
springCloud学习笔记系列(1)-负载均衡Ribbon
查看>>
ngx_lua中的协程调度(三)
查看>>
PHP开发如何实现多线程?
查看>>
Windows Server 2016 + Exchange 2016 +Office365混合部署(四)
查看>>
JSON工具类
查看>>
我的友情链接
查看>>
修改点击cell时显示的颜色
查看>>