使用BeanUtils设置/读取属性的值以及默认支持的自动转化:

@Test
//使用BeanUtils设置/读取属性的值以及自动转化
public void test1() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{Person p=new Person();//使用BeanUtils设置属性的值BeanUtils.setProperty(p, "username", "李四");//使用BeanUtils读取属性的值        System.out.println(BeanUtils.getProperty(p, "username"););//类型不同依然可以自动转化,BeanUtils默认支持八种基本类型的转换BeanUtils.setProperty(p,"age", "123");System.out.println(p.getAge());}

注册已有的转化器来完成复杂类型的自动转化:

@Test
//注册已有的转化器来完成复杂类型的自动转化
public void test3() throws IllegalAccessException, InvocationTargetException{Person p=new Person();String birthday="1995-05-05";//注册Apache提供的时间转换器ConvertUtils.register(new DateLocaleConverter(), Date.class);BeanUtils.setProperty(p, "birthday", birthday);System.out.println(p.getBirthday());
}

Apache已有的时间转化器中不能很好地过滤空字符串,若待转换字符串为空则会抛出异常;而现实业务非常复杂,Apache无法提供给我们所有的类型转化方法,需要时我们可以注册自己需要的转换器完成业务需求。

注册自己的转换器完成时间转化:

@Test
//注册自己的转换器完成时间转化
public void test2() throws IllegalAccessException, InvocationTargetException{Person p=new Person();String birthday="1995-05-05";//为了日期可以赋值到bean的属性,我们给benUtils注册日期转换器ConvertUtils.register(new Converter(){@SuppressWarnings({ "unchecked", "rawtypes" })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(str.trim().equals("")){return null;}SimpleDateFormat dateformate=new SimpleDateFormat("yyyy-MM-dd");try {return dateformate.parse(str);} catch (ParseException e) {throw new RuntimeException(e);}                }}, Date.class);BeanUtils.setProperty(p, "birthday", birthday);System.out.println(p.getBirthday());
}

直接使用map对象填充类:

@Test
//直接使用map对象填充类
public void test4() throws Exception{HashMap<String, String> map=new HashMap<String,String>();map.put("username","李四");map.put("password","lisi");map.put("age","26");map.put("birthday","1990-05-05");ConvertUtils.register(new DateLocaleConverter() , Date.class);Person p=new Person();BeanUtils.populate(p, map);System.out.println(p.getUsername());System.out.println(p.getPassword());System.out.println(p.getAge());System.out.println(p.getBirthday());}

转载于:https://www.cnblogs.com/WayneShao/p/5929845.html

[新手学Java]使用beanUtils控制javabean相关推荐

  1. 零基础学java web开发pdf_新手学Java Web开发.pdf

    作 者 :杨磊等编著 出版发行 : 北京:北京希望电子出版社 , 2010.01 ISBN号 :978-7-89498-988-8 页 数 : 480 丛书名 : 新手学编程系列 原书定价 : 49. ...

  2. 创建的maven子项目怎么访问接口404_【经验分享】新手学Java编程语言怎么入门?...

    新手学Java编程语言怎么入门?掌握语言基础是第一步,了解java基础知识,Java关键字.核心概念或者基本编码技术.掌握操作符.控制执行流程.访问权限控制.复用类.多态.接口.字符串.泛型.数组.容 ...

  3. java 静态方法_新手学Java,哪些知识点可以优先掌握?

    --我们的征途是星辰是大海-- 文|达妹 很多同学在刚接触Java的时候,会有些迷茫,不知道该从哪里入手,该学习掌握哪些必要的基础知识. 达妹总结了零基础学习Java编程语言的几个基础知识要点.希望对 ...

  4. 新手学java还是python知乎_编程初学者应该先学C++、Java还是Python?

    最近,看到这样的一个话题:"打算自学编程,但是不知道该先学哪门语言入门?编程初学者应该先学C++.Java还是Python?",作为一个新手,应该学什么语言入门比较好呢?相信这是困 ...

  5. 新手学java 学哪方面_初学者学Java应从哪些方面学习?

    原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...

  6. 新手学java7编程_新手学Java 7编程:面向对象程序设计

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 面向对象程序设计 Java的核心是面向对象程序设计(OOP).面向对象方法论与Java是密不可分的,而Java所有的程序至少在某种程度上都是面向对象的.因 ...

  7. 新手学java还是python知乎_学java好还是Python好?

    首先我简单的说下目前的市场发展行情,Java和Python发行时间都有很多年了,但是或许你自己也应该清楚,Python是什么时候开始步入我们的生活,步入我们的眼线的,对,就是近几年,这几年随着培训机构 ...

  8. 新手学JAVA(六)----处理随机性的数据

    基础知识 实例 在我们的日常生活中会遇到很多随机性的事情,比如:摇奖,彩票,掷色子,这些都可以通过程序计算其中奖的概率.在JAVA的类库中,有一个专门操作这种随机性数据的类--Random类. 基础知 ...

  9. 新手学JAVA(四)----装箱与拆箱

    一 什么是装箱?什么是拆箱? 在Java中,Java对每种基本数据类型都提供了对象的包装器类型.看下表: 包装类对应表 基本数据类型 包装类 byte Byte boolean Boolean sho ...

最新文章

  1. BERT为什么是NLP的革新者
  2. 安装eAccelerator
  3. 路由器管理页面html,196.168.1.1登陆页面网址
  4. Crypto API 学习笔记一
  5. Quartus 中快速分配器件管脚
  6. 在C#中运用 SQLite
  7. 2017/9/5的学习内容___Python装饰器的应用
  8. Dubbo 2.7.7 发布,FastJson 升级了!
  9. Cesium视频教程
  10. 去掉图标_小图标创建|精选博客
  11. 六一儿童节海报合集,一起重拾童年吧~
  12. 《先知·逸乐》| 《先知·自由》
  13. 一世人中,最黑仔嘅一日
  14. BZOJ3168. [HEOI2013]钙铁锌硒维生素(线性代数+二分图匹配)
  15. 腾讯20岁生日前夕,给了自己一个改变
  16. mysql 取一条离当前时间最近的记录
  17. Unity资源管理(四)-AssetBundle使用模式
  18. 【Tableau Desktop 企业日常技巧12】Tableau安装版本要求和配置 信息
  19. Framer X 21 特别版 Mac 强大的移动应用交互原型设计神器工具
  20. 淘宝TOP开发:(一)

热门文章

  1. [每日一题] OCP1z0-047 :2013-08-08   相关子查询中EXISTS的使用.....................................28...
  2. 兼容多浏览器的CSS背景透明
  3. Problem E: 求最大值和最小值
  4. python创建自定义函数is_number()来判断一个字符是否是数字
  5. ROS学习笔记基础1(Ubuntu16.04安装ROS和依赖包)
  6. mysql can't open file: '..frm'_mysqldump 导出数据时出现can’t opne file ‘xx.frm’ (errno:24)错误...
  7. requestmapping配置页面后_第004课:Spring Boot 项目属性配置
  8. java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?
  9. Pytest之重运行及生成测试报告
  10. 利用搜索引擎实现关键词爬取内容