学习JavaWeb的过程中,在遇到一些比较简单但是属性非常多的JavaBean对象时,赋值就会变得异常辛苦,且一不小心还容易写错。

基于上述理由,编写了一个为Bean对象自动赋值的简易方法。

该方法需要获得Bean对象的归属类

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;

import java.lang.reflect.Field;
import java.sql.ResultSet;

/**
 * JavaBean工具类
 */
public class BeanKits
{
    /**
     * 创建并返回一个简单的bean对象
     * @param beanClass bean对象的所属类
     * @param set bean对象对应的结果集
     * @param columnNum 列数
     * @return bean对象
     * @throws Exception
     */
    public static Object createBean(Class<?> beanClass, ResultSet set, int columnNum) throws Exception
    {
        Object bean = beanClass.newInstance();    // 将所属类实例化
        Field[] fields = beanClass.getDeclaredFields();   // 获取所属类全部声明属性

        ConvertUtils.register(new DateConverter(null), java.util.Date.class);   // 注册日期转换器,防止BeanUtils对值为null的Date类型报错
        for (int i = 0; i < columnNum; i++)
        {
            String fieldName = fields[i].getName();   // 获取对应的属性名
            BeanUtils.setProperty(bean, fieldName, set.getObject(fieldName));   // 对实例的对应属性进行赋值
        }

        return bean;
    }
}