BeanUtils工具的使用(转载)

原文章地址:https://www.cnblogs.com/vmax-tam/p/4159985.html
BeanUtils工具
什么是BeanUtils工具
BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。

BeanUtils工具一般可以方便javaBean的哪些操作?
1)beanUtils 可以便于对javaBean的属性进行赋值。

2)beanUtils 可以便于对javaBean的对象进行赋值。

3)beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。

BeanUtils的使用
使用beanUtils按照以下步骤~

前提:约定前提: 参数名称 需要和javabean的属性名称保持一致!!!!

步骤一

导包:导入commons-beanutils-1.8.3 包

与 commons-logging-1.1.3 包

步骤二

写代码使用~下面就来演示下常见的用法

1)设置javaBean的参数

复制代码
@Test
public void test1() throws Exception
{
//先演示一下不用工具时的做法
//1.生成对象
Student s = new Student();

    /*2.通过set方法赋值
    s.setId(1);
    s.setName("VN");
    s.setAge(19);
    s.setClassID(5);
    s.setBirthday(new Date());
    用以上这种方法来给对象的属性赋值实在是太麻烦了,下面我们用BeanUtils来进行赋值
    */

    //1.得到javaBean的一个字节码对象
    Class clazz = Class.forName("com.vmaxtam.beanutiltest.Student");

    //2.生成该字节码的一个对象
    Object obj = clazz.newInstance();

    //4.注册一个日期格式转换器
    ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);

    //3.使用工具对该对象进行赋值
    //注意: 对于基本数据类型,beanutils工具进行自动类型转换。把String自动转成Integer,Double,Float
    BeanUtils.setProperty(obj, "id", "1");
    BeanUtils.setProperty(obj, "name", "VN");
    BeanUtils.setProperty(obj, "age", "19");
    BeanUtils.setProperty(obj, "classID", "5");
    //如果要使用特殊的日期类型,则String->Date 不能自动转换,这时候就要注册一个转换器
    BeanUtils.setProperty(obj, "birthday", "1996-06-06");

    System.out.println(obj);        
}

复制代码

对比一下,我们发现,使用BeanUtils里赋值好像更麻烦。。。但这只是在这段代码中而已,运用BeanUtils上面代码的这个功能,

我们可以写出一个通用的方法,可以把请求中的参数拷贝到javaBean对象中!

复制代码
约定前提: 请求中的参数名称 需要和javabean的属性名称保持一致!!!!
public static T requestToBean(HttpServletRequest request , Class clazz)
{
//创建javaBean对象
Object obj=null;
try {
obj=clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}

    //得到请求中的每个参数
    Enumeration<String> enu = request.getParameterNames();
    while(enu.hasMoreElements())
    {
        //获得参数名
        String name = enu.nextElement();
        //获得参数值
        String value = request.getParameter(name);
        //然后把参数拷贝到javaBean对象中
        try {
            BeanUtils.setProperty(obj, name, value);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    return (T)obj;
}

复制代码

上面这个方法是一个泛型方法,传不同的javaBean进去都可以从request中获取参数值。在一个工程较大的项目中,如果使用这个通用的方法,就能节省很多代码。

2)把一个javaBean的属性拷贝到另一个javaBean对象中

复制代码
@Test
public void test2() throws Exception
{
//1.生成对象
Student s1 = new Student();
Student s2 = new Student();

    //2.通过set方法赋值
    s1.setId(1);
    s1.setName("VN");
    //s1.setAge(19);//基本数据类型可以为null,null也能拷贝
    s1.setClassID(5);
    s1.setBirthday(new Date());//特殊类型不能为null

    //需求:把s1的属性值拷贝到S2中,注意参数的顺序
    BeanUtils.copyProperties(s2, s1);

    System.out.println(s1);
    System.out.println(s2);    
}

复制代码

一句代码就完成拷贝了,不用像以前那样先用get()方法把s1的属性值拿出来,再用set()方法供给s2属性赋值

3)把一个map集合中的数据拷贝到javaBean中

复制代码
@Test
public void test3() throws Exception
{
//1.生成对象
Map

猜你喜欢

转载自blog.csdn.net/dreamzuora/article/details/80622998