使用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()); }
[新手学Java]使用beanUtils控制javabean的更多相关文章
-
新手学Java,有哪些入门知识点?
很多小伙伴们在刚接触Java的时候,会有些迷茫,不知道该从哪里入手,不管是做前端还是后端,程序员都会用到JAVA,那该掌握哪些必要的基础知识呢.今天就跟大家分享新手学Java,有哪些入门知识点? 下面 ...
-
[新手学Java]使用内省(Introspector)操作JavaBean属性
获取类bean中的所有属性: @Test //获取类bean中的所有属性 public void test1() throws Exception{ BeanInfo info = Introspec ...
-
[新手学Java]反射学习笔记
示例类 @SuppressWarnings("unused") public class Person { public String Name; private int Age; ...
-
重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...
-
2018年如何快速学Java
前言 只有光头才能变强 提前预警:本文适合Java新手阅读(老手可在评论区给下建议),希望大家看完能有所收获. 一.为什么我要写下这篇文章 1.1直接缘由: 在今天(2018年11月4日)有个同学给我 ...
-
【aliyun】学java,看这里,不迷茫!1460道Java热门问题
阿里极客公益活动: 或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了 他们用户自己手中的技术来帮助用户成长 ...
-
从零开始学 Java - log4j 项目中的详细配置
你还会用笔来写字么 我是不怎么会了,有时候老是拿起笔之后不知道这个字怎么写,这时候就会拿起手机去打出来:有时候还会写出来这个字之后越看越不像,这时候就开始怀疑自己的能力了:有时候写出来了一大堆字之后, ...
-
从0.5开始学Java 零
作为新世纪的码农,掌握多门语言是必须的. 我先从java学起,工作又是做c# ,现在辞职了想重新捡回java的技术,所以写一个长篇 来给自己复习 ,题目就叫做从0.5开始学java. 核心内容就是 一 ...
-
(二)一起学 Java Collections Framework 源码之 AbstractCollection
. . . . . 目录 (一)一起学 Java Collections Framework 源码之 概述(未完成) (二)一起学 Java Collections Framework 源码之 Abs ...
随机推荐
-
scp noneed passwd
经常在不同linux机器之间互相scp拷文件,每次总是要输入密码才可行. 通过ssh-keygen生成公钥,在两台机器之间互相建立信任通道即可. 假设本地机器client,远程机器为server. 1 ...
-
Obective-C之宏定义
优(dan)美(teng)的前奏 宏定义这个东东,估计大家在代码中应该天天用吧. 在我刚刚做的一个项目中,各种往代码里码“#define”这种预处理指令. 什么动画时长啊,cell高度啊,cell的个 ...
-
android FakeWindow的小应用大用途
android FakeWindow的小应用大用途 在windowmanager里面有一个FakeWindow,细致一看也就是一个透明的应用覆盖到屏幕的最前端,这样有什么优点呢?首先我们还是从应用的需 ...
-
HTML 基础语言
打开DREAMWEAVER,新建HTML.. body的属性: bgcolor 页面背景色 background 背景壁纸.图片 text ...
-
ASP.NET MVC HttpPostedFileBase文件上传
HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// </summ ...
-
如何调用别人提供的webservice接口
当我们拿到一个接口的时候,先别急着去调用它,我们得先测试这个接口是否正确,是否能调用成功,以及返回的数据是否是我们需要的类型等等.这时候我们需要一个工具,比如SoapUI.(最好用绿色免安装版的.)然 ...
-
54. Spiral Matrix(剑指offer 19)
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
-
windows下Oracle数据库完全删除
1.1 停止所有oracle的服务 1.2 删除安装路径 app及其下所有文件 1.3 删除注册表 regedit 进入 在下列列表中找到与oracle相关的注册表项删除 1.HKEY_L ...
-
【DIOCP3-说明书】DIOCP3的输出日志
DIOCP3除了有详细的监控面板之外,还有详细的输出日志,当然需要打开日志编译开关! 在工程选项加入DEBUG编译指令,这样在运行中就可以看到DIOCP3的运行详细日志 日志输出在EXE相同目录的LO ...
-
Hive 建外链表到 Hbase(分内部表、外部表两种方式)
一. Hive 建内部表,链到hbase :特点:Hive drop表后,Hbase 表同步删除 drop table if exists hbase_kimbo_test1;CREATE TABLE ...