1.BeanUtils框架/工具(APACHE开源组织开发)

   (1)BeanUtils框架可以完毕内省的一切功能。并且优化

   (2)BeanUtils框架可以对String<->基本类型自己主动转化(即八种基本类型的转换)

   (3)BeanUtils框架自己定义转换器:

ConvertUtils.register( 转换规则 ,目标对象的Class)

   (4)向BeanUtils框架注冊自己定义转换器必须放在bu.setProperty()代码之前    

   (5)使用BeanUtils内置String->Date的转换器:

ConvertUtils.register(new DateLocaleConverter(),java.util.Date.class);

  (6)要使用的两个jar包:

commons-beanutils-1.8.0.jar和commons-logging.jar

     将这两个包拷贝到MyEclipse或者Eclipse中后,鼠标放在jar包上,右键选择“Build Path”-->"Add to Build Path"就可以在代码中用这两个jar包了(而且这样代码中才有提示)

2.代码练习:





Student的代码(Student.java):



package cn.wwh.www.java.beanutils;





import java.util.Date;





/**

 *类的作用:特别注意:開始将birthday写出birthDay,而在beanutils中仍然用的是birthday,此时程序不能通过。

 *getBirthday和setBirthday中的D改过来后,才执行成功,这全然符合之前的说的,框架和setXxx和getXxx有关而与private Date birthay;中的birthDay无关

 *

 *

 *@author 一叶扁舟

 *@version 1.0

 *@创建时间: 2014-7-21   上午11:49:19

 */

public class Student {





private String name;

private int age;

private Date birthday;



public Student(){

System.out.println("构造函数");


}

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name the name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* @return the age

*/

public int getAge() {

return age;

}

/**

* @param age the age to set

*/

public void setAge(int age) {

this.age = age;

}

/**

* @return the birthDay

*/

public Date getBirthday() {

return birthday;

}

/**

* @param birthDay the birthDay to set

*/

public void setBirthday(Date birthday) {

this.birthday = birthday;

}



}

BeanUtils的測试代码(Demo1.java):



package cn.wwh.www.java.beanutils;





import java.lang.reflect.InvocationTargetException;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.apache.commons.beanutils.BeanUtils;

import org.apache.commons.beanutils.ConvertUtils;

import org.apache.commons.beanutils.Converter;

import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

import org.junit.Test;





/**

 *类的作用:由于BeanUtil仅仅能转换八种基本类型,假设转换其它类型,

 *则须要自定义转换方式。 比如:想转换日期类型

 * 

 * 

 *@author 一叶扁舟

 *@version 1.0

 *@创建时间: 2014-7-21 上午11:49:07

 */

public class Demo {





// 自定一个类型转化器(将String---->Date格式化的输出)

@Test

public void testDemo1() throws Exception {

Student student = new Student();

BeanUtils bu = new BeanUtils();

//一定要先注冊下

ConvertUtils.register(new Converter() {

@Override

public Object convert(Class calzz, Object type) {

/**

* 參数1:class,java.uitl.Date;(目标类型) 參数2:传入參数的类型,java.lang.string;

*/

String strBirthday = (String) type;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");





try {

return sdf.parse(strBirthday);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

}, Date.class);





bu.setProperty(student, "name", "一叶扁舟");

bu.setProperty(student, "age", "22");

bu.setProperty(student, "birthday", "2014-07-22");





// 取出数据

String name = bu.getProperty(student, "name");

String age = bu.getProperty(student, "age");

String birthday = bu.getProperty(student, "birthday");





System.out.println("name:" + name + "\nage:" + age + "\nbirthday:"

+ new Date(birthday).toLocaleString());





/*

* 输出结果: 构造函数 

* name:一叶扁舟

*  age:22 

*  birthday:2014-7-22 14:00:00(我并没有改动时间,与里面源码调用有关)

*/





}

@Test

public void testDemo2() throws Exception{

Student student = new Student();

BeanUtils bu = new BeanUtils();



ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);







bu.setProperty(student, "name", "一叶扁舟");

bu.setProperty(student, "age", "22");

bu.setProperty(student, "birthday", "2014-07-22");





// 取出数据

String name = bu.getProperty(student, "name");

String age = bu.getProperty(student, "age");

String birthday = bu.getProperty(student, "birthday");





System.out.println("name:" + name + "\nage:" + age + "\nbirthday:"

+ new Date(birthday).toLocaleString());





}

}

   

代码測试效果图:







BeanUtils使用案例的更多相关文章

  1. BeanUtil工具类的使用

    BeanUtils的使用 1.commons-beanutils的介绍 commons-beanutils是Apache组织下的一个基础的开源库,它提供了对Java反射和内省的API的包装,依赖内省, ...

  2. [转]BeanUtil使用

    BeanUtils的使用 转载自:https://blog.csdn.net/xxf159797/article/details/53645722 1.commons-beanutils的介绍 com ...

  3. java 内省综合案例和Beanutils工具包

    演示用eclipse自动生成 ReflectPoint类的setter和getter方法. 直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用 ...

  4. 15、Jdbc的优化(BeanUtils组件)

    Jdbc的优化! BeanUtils组件 自定义一个持久层的框架 DbUtils组件 案例优化 1. BeanUtils组件 1.1    简介 程序中对javabean的操作很频繁, 所以apach ...

  5. 20160406javaweb 之JDBC简单案例

    前几天写的user注册登录注销案例,没有用到数据库,现在做出改动,使用数据库存储信息: 一.首先我们需要建立一个数据库: 如下图: 创建数据库的代码如下: -- 导出 database02 的数据库结 ...

  6. 第13天 JSTL标签、MVC设计模式、BeanUtils工具类

    第13天 JSTL标签.MVC设计模式.BeanUtils工具类 目录 1.    JSTL的核心标签库使用必须会使用    1 1.1.    c:if标签    1 1.2.    c:choos ...

  7. 第14天dbutils与案例

    第14天dbutils与案例 第14天dbutils与案例    1 1.    1.dbutils介绍    2 2.    2.dbutils快速入门    2 3.    3.dbutils A ...

  8. Web开发模式【Mode I 和Mode II的介绍、应用案例】

    开发模式的介绍 在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II) 首先我们来理清一些概念吧: DAO(Data Access Object):主要对数据的 ...

  9. BeanUtils 读取数据

    前两篇文章都是关于setProperty的,下面来说一个关于getProperty 的小案例.如下: MyClass.java package beanutils; public class MyCl ...

随机推荐

  1. Mongodb——文档数据库

    mongodb是一个文档数据库. mongo操作 多个修改操作,但每个修改携带的数据包较小,可操作考虑批量操作.bulkWrite()改善性能. MongoCollection是线程安全的. db.c ...

  2. html5——动画案例(太阳系)

    太阳系主要利用定位,伪元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. linux下vim命令汇总

    一. 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将 ...

  4. css图片高清适配

    同一张图片,在普通屏显示正常,但高清屏出现模糊.原因是原来一个像素的点分成的四个像素的点进行了显示. 解决方案:在高清屏中把图片变成二倍图,前提是二倍的高清图已经存在. .icon{ backgrou ...

  5. C# 获得 当年1月1号

    //默认当年1月1号 ViewBag.time1 = , ).ToString("yyyy-MM-dd"); ViewBag.time2 = DateTime.Now.ToStri ...

  6. R语言数据重塑

    使用cbind()函数连接多个向量来创建数据帧.此外,使用rbind()函数合并两个数据帧   使用merge()函数合并两个数据帧.数据帧必须具有相同的列名称,在其上进行合并   melt()拆分数 ...

  7. centOS7卸载google-chrome

    参考: https://www.jianshu.com/p/39d0b8f578d9

  8. Django——2 路由分配设置 re_path正则匹配 include总路由 url传参 name使用 模板渲染render方法 模板渲染方法

    Django 路由分配设置 re_path正则匹配 include总路由设置 url额外参数的传递 name的使用 模板的渲染:render方法   路由的分配中, 可以设定相应的转换器加以约束,比如 ...

  9. Maven学习总结(9)——使用Nexus搭建Maven私服

    1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部 ...

  10. springMVC+springJDBC+Msql注解模式

    最近基于Spring4.X以上的版本写了一个springMVC+springJDBC+Msql注解模式的一个项目,之中也遇到过很多问题 ,为了防止以后遇到同样问题现记录一下知识点以及详细配置. 首先我 ...