Sun公司的内省API过于繁琐,所以Apache组织结合很多实际开发中的应用场景开发了一套简单、易用的API操作Bean的属性——BeanUtils
Beanutils工具包的常用类:
•BeanUtils
•PropertyUtils
•ConvertUtils.regsiter(Converter convert, Class clazz)
•自定义转换器
 
首先我们需要导入两个Jar包
 
package com.cn.gbx;

import java.util.Date;

public class Person {

	private String name;
private String password;
private int age;
private Date date = null; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
} @Override
public String toString() {
return name + " " + password + " " + age + " " + date.toLocaleString();
}
}

  

package com.cn.gbx;

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; public class BeanUtilsDemo {
@Test
public void test1() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Person p = new Person();
BeanUtils.setProperty(p, "name", "gbx");
System.out.println(p.getName()); String name = null;
BeanUtils.getMappedProperty("name", name);
System.out.println(name);
} @Test
public void test2() throws IllegalAccessException, InvocationTargetException { //为BeanUtils 注册转自己的换器 String to Date
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 ("".equals(str.trim())) {
return null;
}
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sf.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e); //异常连不可断
}
return date;
}
},
Date.class); String name = "gbx";
String age = "23";
String password = "123";
String birth = "1990-11-14"; Person p = new Person();
BeanUtils.setProperty(p, "name", name);
BeanUtils.setProperty(p, "age", age); // BeanUtils自动帮我们完成了转换, 自动的只支持八中基本数据类型
BeanUtils.setProperty(p, "password", password); //非八种基本数据类型 我们需要注册自己的转换器
BeanUtils.setProperty(p, "date", birth); System.out.println(p);
} @Test
public void test3() throws IllegalAccessException, InvocationTargetException {
String name = "gbx";
String age = "23";
String password = "123";
String birth = "1990-11-14"; //注册系统为我们提供的转换器
ConvertUtils.register(new DateLocaleConverter(), Date.class); Person p = new Person();
BeanUtils.setProperty(p, "name", name);
BeanUtils.setProperty(p, "age", age); // BeanUtils自动帮我们完成了转换, 自动的只支持八中基本数据类型
BeanUtils.setProperty(p, "password", password); BeanUtils.setProperty(p, "date", birth); System.out.println(p);
} //这样可以直接把表单提交 request交给对象了
@Test
public void test4() throws IllegalAccessException, InvocationTargetException {
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person p = new Person();
Map<String, String> info = new HashMap<String, String>();
info.put("name", "gbx");
info.put("age","23");
info.put("password","123");
info.put("date", "1990-11-14"); BeanUtils.populate(p, info); // 。。。
System.out.println(info);
} }

  

BeanUtils框架的简单运用的更多相关文章

  1. 基于ThinkPHP框架的简单的后台管理系统

    版权声明:本文为博主原创文章,未经博主允许不得转载. 基于ThinkPHP框架的简单的后台管理系统 一个简单的后台管理系统,可能还不全面,可以自己改,有登录功能 实例如图:    

  2. PHP ORM框架与简单代码实现(转)

    对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据 ...

  3. BeanUtils框架浅析

    一.使用步骤: 1.添加jar包: commons-beanutils-1.8.0.jar commons-logging.jar 2.使用setProperty()方法对javabean设置属性值 ...

  4. 初识服务发现及Consul框架的简单使用

    初识服务发现及Consul框架的简单使用   1.什么是服务发现? 服务发现组件记录了(大规模)分布式系统中所有服务的信息,人们或者其它服务可以据此找到这些服务. DNS 就是一个简单的例子. 当然, ...

  5. truffle框架的简单使用

    truffle 给大家介绍一下这个框架怎么使用,其实把这个框架就是你们看我之前有一个教程是教你们怎么用remix-ide来连接私有链,编译,配置合约,然后进行调用的,truffle其实就是把这个步骤放 ...

  6. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...

  7. 框架Thinkphp5 简单的实现行为 钩子 Hook

    这篇文章主要介绍了关于框架Thinkphp5 简单的实现行为 钩子 Hook,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现在一个方法开始和结束加入两个行为:api_init.ap ...

  8. Net系列框架-Dapper+简单三层架构

    Net系列框架-Dapper+简单三层架构 工作将近6年多了,工作中也陆陆续续学习和搭建了不少的框架,后续将按由浅入深的方式,整理出一些框架源码,所有框架源码本人都亲自调试通过,如果有问题,欢迎联系我 ...

  9. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

随机推荐

  1. jQuery DataTable-JavaScript API

    虽然大多数时候你的Javascript交互将通过使用datatable初始化对象作为描述在使用这个网站的部分,有时,你会发现它有用一些外部控制表.可以使用以下函数从jQuery.dataTable对象 ...

  2. Delphi内嵌汇编语言BASM精要(转帖)

    1 BASM概念简要  汇编语句由指令和零至三个表达式构成.表达式由常数(立即数).寄存器和标识符构成.例如: movsb        // 单指令语句 jmp @Here    // 一个表达式: ...

  3. php ssh2 scp问题解决

    <?php$connection = ssh2_connect('192.168.1.XX', 22);$res=ssh2_auth_password($connection, 'root', ...

  4. href="#"会导致location.replace(location.href);脚本不工作

    我们经常这样:<a onclick="xxx" href="#" 其实这不是一个好习惯,当点下这个连接后,主页面的URL后面会加个#号,这样就会导致很多J ...

  5. 打开开源项目总得.md文件

    google了一些: 78 Tools for Writing and Previewing Markdown  http://mashable.com/2013/06/24/markdown-too ...

  6. 编译器 perforSelecter时 警告去除

    #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks&quo ...

  7. linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)

    转于:http://blog.csdn.net/maray/article/details/2900689 Linux内核的三种调度方法: 1,SCHED_OTHER 分时调度策略, 2,SCHED_ ...

  8. mysql高可用之PXC(Percona XtraDB Cluster)

    简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...

  9. NTP客户端的设置

    LINUX做为客户端自动同步时间 如果想定时进行时间校准,可以使用crond服务来定时执行. 编辑 /etc/crontab 文件 加入下面一行:   30 8 * * * root /usr/sbi ...

  10. python-django 模型model字段类型说明

    V=models.CharField(max_length=None<, **options>) #varchar V=models.EmailField(<max_length=7 ...