beanutils组件

一. javabean介绍

在使用beanutils组件之前先了解什么是Javabean?javabean其实就是一种规范,一个java类如果满足一下条件,那么称之为Javabean:

  1. 类的修饰符为public
  2. 必须提供无参构造函数(可以是默认构造函数)
  3. 成员变量必须是私有的且提供公共的set,get方法(如果变量是Boolean类型的则是is和get方法)

二. beanutils组件简介

在开发中我们经常要对Javabean进行操作,而beanutils就是操作Javabean的工具。beanutils是Apache组织提供的开源组件,使用之前先到Apache官网下载组件,然后需要引入
1.commons-beanutils-.jar核心包
2.引入日志支持包: commons-logging-.jar

三. 实例:基本用法

  1. 对象属性的拷贝
BeanUtils.copyProperty(user,"username","狗蛋");
  1. 对象的拷贝
BeanUtils.copyProperties(newuser,olduser);
  1. 将map数据拷贝到对象中
    注意:map中的kay必须要与属性名一致
BeanUtils.populate(user,map)

代码实例:

  • Javabean类
public class User {
	
	private String username ;
	private String password ;
	private int id ;
	private String birthday ;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	@Override
	public String toString() {
		return "username"+username+"password"+"password"+"id"+id+"birthday"+birthday;
	}
	
}
  • Beanutils对javabean的基本操作
public void test1() throws Exception{
		User user = new User();
		//1.对象属性的拷贝
		//BeanUtils.copyProperty(user,"username","狗蛋");
		
		//2.对象拷贝
		//User old = new User();
		//BeanUtils.copyProperties(user, old);
		
		//3.将map数据拷贝到对象:key必须与属性名一致
		Map<String,Object> userMap = new HashMap<String,Object>();
		userMap.put("username", "张全蛋");
		userMap.put("password","12345");
		userMap.put("id",14);
		BeanUtils.populate(user,userMap);
		
		//测试
		System.out.println(user);
		
	}

四. 实例:日期类型转换

在网页提交表单数据是经常用到,有两种方式:1.自定义日期类型转换器 2.使用组件自带的日期类型转换器
代码实例:

//日期类型的转换:在网页提交数据时经常用到
	public void test2() throws Exception{
		//方式1.自定义热气类型转换器
		//模拟网页提交表单数据
		String username = "蛋总";
		String password = "12345";
		String birthday = "1992-12-23";
		//注册热气类型转换器
		ConvertUtils.register(new Converter(){

			public Object convert(Class type, Object value) {
				if(type!=Date.class){
					return null;
				}
				if(value==null && "".equals(value.toString().trim())){
					return null;
				}
				SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
				
				try {
					return sdf.parse(value.toString());
				} catch (ParseException e) {
					throw new RuntimeException();
				}
				
			}
			
		}, Date.class);
		
		//封装数据
		User user = new User();
		BeanUtils.copyProperty(user, "username", username);
		BeanUtils.copyProperty(user,"password",password);
		BeanUtils.copyProperty(user, "birthday",birthday);
		
		//测试
		System.out.println(user);
		
		
	}
//使用组件提供的时间转换器
	public void test3() throws Exception{
		//表单提交数据
		String username = "kobe";
		String password = "12345";
		String birthday = "96-07-01";
		ConvertUtils.register(new DateLocaleConverter(), Date.class);
		User user = new User();
		BeanUtils.copyProperty(user, "username", username);
		BeanUtils.copyProperty(user,"password", password);
		BeanUtils.copyProperty(user,"birthday",birthday);
		//测试
		System.out.println(user);
	}
}
上一篇:工具类:对象拷贝BeanUtils(提高对象拷贝效率)


下一篇:BeanUtils对象属性copy的性能对比以及源码分析