BeanUtils工具类的使用

BeanUtils:
  • BeanUtils的简单使用
  • BeanUtils的populate方法的使用
  • BeanUtils自定义工具类
    这里写图片描述

这里写图片描述

BeanUtils的简单使用

package bull01.BeanUtils;

import java.util.Arrays;

public class User implements java.io.Serializable {
    private String userName;
    private String userId;
    private String userPasswd;
    private String userHobby[];
    private int userAge;

    public User() {

    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUserPasswd() {
        return userPasswd;
    }
    public void setUserPasswd(String userPasswd) {
        this.userPasswd = userPasswd;
    }
    public String[] getUserHobby() {
        return userHobby;
    }
    public void setUserHobby(String[] userHobby) {
        this.userHobby = userHobby;
    }
    public int getUserAge() {
        return userAge;
    }
    public void setUserAge(int userAge) {
        this.userAge = userAge;
    }
    @Override
    public String toString() {
        return "User [userName=" + userName + ", userId=" + userId
                + ", userPasswd=" + userPasswd + ", userHobby="
                + Arrays.toString(userHobby) + ", userAge=" + userAge + "]";
    }





}
package bull01.BeanUtils;

import java.lang.reflect.InvocationTargetException;

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

public class BeanUtilsDemo_01 {

    @Test
    public void method2() throws Exception, InvocationTargetException {
        User users = new User();

        /*
         * 需要导两个BeanUtils包:
         *      commons-beanutils-1.8.3.jar
         *      commons-logging-1.1.1.jar
         */
        //给JavaBean指定属性封装数据,相当于调用setter方法
        BeanUtils.setProperty(users,"userId","ID002");
        BeanUtils.setProperty(users,"userName", "kobe");
        BeanUtils.setProperty(users, "userPasswd", "123");

        System.out.println(users);
        //获取数据
        String userName = BeanUtils.getProperty(users, "userName");
        System.out.println(userName);
    }
}

结果:
    User [userName=kobe, userId=ID002, userPasswd=123, userHobby=null, userAge=0]
    kobe

BeanUtils的populate方法的使用

package bull01.BeanUtils;

import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;

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

/*
 * 模拟数据
 */
public class BeanUtilsDemo_02 {
    @Test
    public void method() throws Exception, InvocationTargetException {
        //创建一个Map对象,填充需要的数据
        Map<String,String[]> map = new HashMap();
        map.put("userName", new String[]{"张三"});
        map.put("userId", new String[]{"李四"});
        map.put("userPasswd", new String[]{"王五"});
        map.put("userHobby", new String[]{"打篮球","踢足球"});
        map.put("userAge", new String[]{"10"});

        //创建User对象
        User users = new User();
        /*
         * 使用populate()进行填充:
         *  1.可以向指定的属性填充一组数据,类型必须是数组[];
         *  2.如果属性不是数组,将使用map.value表示数组中的第一个。
         *      例如:usrId属性不是数组。
         *          若有map.put("userId", new String[]{"李四","王五"});会默认李四。
         *  3.BeanUtils支持类型:基本类型和基本类型对应的包装类,自动将字符串转换基本类型。
         *      例如:userAge是int型,
         *          map.put("userAge", new String[]{"10"})会默认转换"10"。
         */
        BeanUtils.populate(users, map);

        System.out.println(users);
    }
}

结果:
    User [userName=张三, userId=李四, userPasswd=王五, userHobby=[打篮球, 踢足球], userAge=10]

BeanUtils自定义工具类

  • MyBeanUtilsDemo_01类
package bull01.MyBeanUtils;

import java.lang.reflect.InvocationTargetException;
import java.util.Map;

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

/*
 * BeanUtils自定义工具类
 */
public class MyBeanUtilsDemo_01 {
    /*
     * Class<T> 此处的T就是一个变量,在运行时接收具体类型。例如:User
     * 变量必须先定义在使用
     *      泛型变量的定义方式:修饰符 <变量名> 返回值。
     *      例如下面的方法:static <User> User
     */
    @Test
    public static <User> User populate(Class <User> beanClass,Map<String,String[]> properties) {
        //静态方法,TestTool工具类那边直接用类名访问
        try {
            //利用反射创建实例,beanClass是一个类对象
            User obj = beanClass.newInstance();
            //填充数据
            BeanUtils.populate(obj , properties);
            return obj;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new RuntimeException(e);
        }
    }
}
  • TestTool类
package bull01.MyBeanUtils;

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

import org.junit.Test;

import bull01.BeanUtils.User;

public class TestTool {
    @Test
    public void method() {
        Map<String,String[]> map = new HashMap();
        map.put("userName", new String[]{"kobe"});
        map.put("userId", new String[]{"Id002"});
        map.put("userPasswd", new String[]{"9246538"});
        map.put("userHobby", new String[]{"打篮球","踢足球"});
        map.put("userAge", new String[]{"10"});
        /*
         * 传递的参数一个是类对象,一个是Map集合
         */
        User user = MyBeanUtilsDemo_01.populate(User.class,map);
        System.out.println(user);
    }
}

结果:
    User [userName=kobe, userId=Id002, userPasswd=9246538, userHobby=[打篮球, 踢足球], userAge=10]

猜你喜欢

转载自blog.csdn.net/sinat_40662281/article/details/79811366