前言
在dao层、servlet层或者其它层时,我们常常需要创建javabean对象;
而使用BeanUtils工具类可以为我们快速的创建javabean对象。举例如下:
class User{
private Integer id;
private String name;
private Integer age;
public User(){}
public User(Integer id,String name,Integer age){
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "we{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
使用BeanUtils工具类
1.使用BeanUtils工具类前需要导入jar包:commons-beanutils-1.8.0 和 commons-logging-1.1.1
2.使用BeanUtils.populate(Object bean, Map properties)方法就能完成参数注入
bean: 需要注入的 javabean对象
properties:相应的参数值,为Map类型,以键值对的形式,要求key的值与 bean所属类属性名对应,同时 bean所属的类需要提供set方法
该方法的原理是提取Map中的键值对,如:存在 key:name时就会调用 setName给 bean对象设置 key:name对应的 value值
public class Main{
public static void main(){
User user = new User();
System.out.println(user); // user{id=null, name='null', age=null}
Map<String,Object> map = new HashMap<>();
map.put("id",1);
map.put("name","张三");
map.put("age",17);
BeanUtils.populate(user,map);
System.out.println(user); // we{id=1, name='张三', age=17}
}
}
开发中的应用
在实际开发中,我们可以将其封装为一个工具类中的一个方法,从而让编码操作变得更便捷。如下:
public class Utils{
// 使用泛型,返回注入之后的 bean对象
public static <T> T copyParamToBean(T bean,Map value){
try {
BeanUtils.populate(bean,value);
} catch (Exception e) {
throw new RuntimeException(e);
}
return bean;
}
}
public class Main{
public static void main(String[] args){
Map<String,Object> map = new HashMap<>();
map.put("id",1);
map.put("name","张三");
map.put("age",17);
// 省略了 User user = new User();
User user = Utils.copyParamToBean(new user(),map);
}
}