[toc]

Commons BeanUtils的介绍

  commons-beanutil开源库是apache组织的一个基础的开源库。为apache中很多类提供工具方法。

Commons-beanutil中包括大量和JavaBean操作有关的工具方法,使用它能够轻松利用Java反射机制来完毕代码中所须要的功能,而不须要具体研究反射的原理和使用,同一时候,该类库中提出了动态Bean的概念,不但提供现有JavaBean的全部功能,并且还能够在执行时动态的对Bean中的属性数据类型进行改动以及增删属性。

  这里只记录最基础的使用,简化数据的封装

BeanUtils工具类

封装JavaBean

要求

  1. 类必须是被public修饰的
  2. 类必须提供了空参的构造器
  3. 成员变量必须被private修饰
  4. 提供公共的getter和setter方法

功能

封装数据

populate(Object obj,Map map)

概念

BeanUtils工具类操作的是属性,而并非成员变量(虽然通常情况下,他们是同名的)

属性:setter和getter方法截取后的产物

比如getName() —> Name —>name 此时name就是属性。

常用方法

  1. setProperty()
  2. getProperty()
  3. populate(Object obj,Map map) 将map集合的键值对信息,封装到对应的JavaBean对象中

setProperty()和getProperty()

package cn.xgblack.weblogin.test;

import cn.xgblack.weblogin.domain.Webuser;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.jupiter.api.Test;

import java.lang.reflect.InvocationTargetException;

/**
 * @author 小光
 * @date 2019/5/12 9:18
 * className: BeanUtilsTest
 * description:
 * ***************************************************************************
 * Copyright(C),2018-2019,https://blog.xgblack.cn  .All rights reserved.
 * ***************************************************************************
 */
public class BeanUtilsTest {
    @Test
    public void test(){
        Webuser user = new Webuser();
        try {
            BeanUtils.setProperty(user,"username","zhangsj");
            System.out.println(user);
            String username = BeanUtils.getProperty(user, "username");
            System.out.println(username);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }

    }
}

populate(Object obj,Map map)

/*//2.获取请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
//使用BeanUtils封装
Webuser loginUser = new Webuser();
loginUser.setUsername(username);
loginUser.setPassword(password);*/

//2.获取所有请求参数
Map<String, String[]> map = request.getParameterMap();
Webuser loginUser = new Webuser();

try {
    BeanUtils.populate(loginUser,map);
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}