您的位置:首页 > 编程语言 > Java开发

Java Web学习(40):BeanUtils的使用

2016-08-20 11:32 357 查看

什么是BeanUtils

BeanUtils主要提供了对于JavaBean进行各种操作。

BeanUtils的作用

在一般的写Javabean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道Javabean的相关属

性和方法,写Javabean是比较简单的,但是组件太多的时候,重复编写经常是枯燥乏味令人厌烦的。但当有些时候我

么需要调用动态对象的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来解决这

个问题。它需要Jakarta-Commons -Collections包和Jakarta-Commons -logging包的支持。                      

org.apache.commons.beanutils

这个包主要提供用于操作JavaBean的工具类,Jakarta-Common-BeanUtils的主要功能都在这个包里实现。

BeanUtils可以直接get和set一个属性的值。它将property分成3种类型:

1)Simple——简单类型,如Stirng、Int……

(对于Simple类型,第二个参数直接是属性名即可,详见代码)

2)Indexed——索引类型,如数组、arrayList……

(对于Indexed,则为"属性名[索引值]",注意这里对于ArrayList和数组都可以用一样的方式进行操作,详见代码)

3)Maped——这个不用说也该知道,就是指Map,比如HashMap……

(对于Map类型,则需要以"属性名(key值)"的形式,详见代码)

访问不同类型的数据可以直接调用函数getProperty和setProperty。它们都只有2个参数,第一个是JavaBean对象,

第二个是要操作的属性名。

例子

Person实体类代码:

package com.domain;

/**
* Person实体类
* @author Administrator
* @date 2016年8月16日
*/
public class Person {
private String name;
private int age;
private String gender;

public Person() {
super();
}

public Person(String name, int age, String gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";
}

}
User实体类代码:

package com.domain;

/**
* User实体类
* @author Administrator
* @date 2016年8月16日
*/
public class User {
private String username;
private String password;

public User() {
super();
}

public User(String username, String password) {
super();
this.username = username;
this.password = password;
}

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;
}

@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}

}
使用Junit测试的Demo代码:

package com.domain;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;

import com.utils.CommonUtils;

public class Demo {
@Test
public void fun1() throws Exception{
String className = "com.domain.Person";
Class class1 = Class.forName(className);
Object bean = class1.newInstance();

BeanUtils.setProperty(bean, "name", "李思思");
BeanUtils.setProperty(bean, "age", "19");
BeanUtils.setProperty(bean, "gender", "女");

System.out.println(bean);

String age = BeanUtils.getProperty(bean, "age");
System.out.println(age);

}

/**
* 把map中的属性直接分装到一个Bean中
* @throws Exception
* @throws Ill
*/
@Test
public void fun2() throws Exception{
Map<String, String> map = new HashMap<String,String>();
map.put("username", "连馨");
map.put("password","888888");

User user = new User();
BeanUtils.populate(user, map);

System.out.println(user);
}

@Test
public void fun3() {
Map<String, String> map = new HashMap<String,String>();
map.put("username", "连子");
map.put("password","666666");

User user = CommonUtils.toBean(map, User.class);
System.out.println(user);
}

}
测试结果:



后续根据不间断的学习还会进行更新增加,目前就是使用到这些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: