一. javabean介绍
在使用beanutils组件之前先了解什么是Javabean?javabean其实就是一种规范,一个java类如果满足一下条件,那么称之为Javabean:
- 类的修饰符为public
- 必须提供无参构造函数(可以是默认构造函数)
- 成员变量必须是私有的且提供公共的set,get方法(如果变量是Boolean类型的则是is和get方法)
二. beanutils组件简介
在开发中我们经常要对Javabean进行操作,而beanutils就是操作Javabean的工具。beanutils是Apache组织提供的开源组件,使用之前先到Apache官网下载组件,然后需要引入
1.commons-beanutils-.jar核心包
2.引入日志支持包: commons-logging-.jar
三. 实例:基本用法
- 对象属性的拷贝
BeanUtils.copyProperty(user,"username","狗蛋");
- 对象的拷贝
BeanUtils.copyProperties(newuser,olduser);
- 将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);
}
}