BeanUtils工具常用工具类有两个:BeanUtils、ConvertUtils。BeanUtils用于封装数据,ConvertUtils用于处理类型转换
常用方法:

setProperty(Object obj,String name,Object value) 设置属性值,如果指定属性不存在,不抛异常
getProperty(Object obj,String name) 获得属性值,如果指定属性不存在,抛方法找不到异常
  1. package day1.test.test1;
  2. import org.apache.commons.beanutils.BeanUtils;
  3. import org.junit.Test;
  4. import java.lang.reflect.InvocationTargetException;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. /**
  8. * @author 黄锐
  9. * @create 2020-12-22 18:53
  10. *实际开发中,需要封装到JavaBean中的数据存放在配置文件
  11. *内容:uid=u001 、userName=jack
  12. *javaBean中两个概念:字段Field、属性Property
  13. *字段:就是成员变量。
  14. *例如:private String userName;
  15. *字段名称:userName
  16. *属性:通过getter或setter方法推敲获得
  17. *获得方式:省略set或get前缀,首字母小写
  18. *例如:getUserName -->UserName -->userName
  19. *注意:一般情况下,字段名称和属性名称一致的。
  20. *特殊情况
  21. *private String description; //字段名:description
  22. *public String getDesc(){ //属性名:desc
  23. *return description;
  24. * }
  25. *1、BeanUtils工具类,提供setProperty给指定属性设置内容和getProperty获得指定属性的值
  26. */
  27. public class BeanUtilsDemoTest {
  28. @Test
  29. public void test() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
  30. //1、BeanUtils工具类,提供setProperty给指定属性设置内容和getProperty获得指定属性的值
  31. User user = new User();
  32. System.out.println("封装前:" + user);
  33. //封装数据来自配置文件,底层其实user.setUid("u002")
  34. BeanUtils.setProperty(user,"uid","u002");
  35. BeanUtils.setProperty(user,"userName","hhhh");
  36. System.out.println("封装后:" + user);
  37. //2.获得属性值
  38. String userName = BeanUtils.getProperty(user, "userName");
  39. System.out.println(userName);
  40. }
  41. @Test
  42. public void test1() throws InvocationTargetException, IllegalAccessException {
  43. //1.模拟数据,创建一个Map,填充需要的数据
  44. HashMap<String, String[]> map = new HashMap<>();
  45. map.put("uid", new String[]{"u001"});
  46. map.put("userName", new String[]{"jack","rose"});
  47. map.put("password", new String[]{"1234"});
  48. //2.将使用populate进行填充
  49. User user = new User();
  50. BeanUtils.populate(user,map);
  51. System.out.println(user);
  52. }
  53. @Test
  54. public void test2() throws InvocationTargetException, IllegalAccessException {
  55. //1.模拟数据,创建一个map,填充需要的数据
  56. Map<String, String[]> map = new HashMap<String, String[]>();
  57. map.put("uid",new String[]{"u001"});
  58. map.put("userName",new String[]{"jack","rose"});
  59. map.put("password",new String[]{"1234"});
  60. map.put("hobbies",new String[]{"敲代码","早上敲代码","晚上敲代码"});
  61. map.put("age",new String[]{"123"});
  62. //2.使用populate进行填充
  63. //可以指向属性,填充一组数据,需要类型必须是[]
  64. //如果属性不是数组,将使用map.value表示数组中的第一个。
  65. //BeanUtiles支持类型:基本类型和基本类型对应的包装类,自动将字符串转换为基本类型
  66. User user = new User();
  67. BeanUtils.populate(user,map);
  68. System.out.println(user);
  69. }
  70. }

javaBean

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
populated:一般来说,这个方法是在org.apache.commons.beanutils.BeanUtils包中的方法。
该方法的函数原型为:BeanUtils.populate( Object bean, Map properties )。这个方法会遍历map中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。将Map数据封装到指定Javabean中,一般用于将表单的所有数据封装到javabean