自定义一个BeanUtils工具类

    1. 定义一个静态的工具类,定义的方法为populate,参数为

    Object和Map,返回值为void

    1. package Day01_Demo.Test06;/*
    2. @create 2020--12--21--14:56
    3. */
    4. import org.apache.commons.beanutils.BeanUtils;
    5. import java.lang.reflect.InvocationTargetException;
    6. import java.util.Map;
    7. public class MyBeanUtils {
    8. //自动填充
    9. public static void populate(Object bean,Map<String,String[]> properties) {
    10. try {
    11. BeanUtils.populate(bean, properties);
    12. } catch (IllegalAccessException | InvocationTargetException e) {
    13. //作为运行时异常抛出,因为当前这个类是工具类,其他类调用的时候就不需要再处理异常了
    14. throw new RuntimeException(e);
    15. }
    16. }
    17. //自动填充的方法,并且返回bean对象
    18. public static Object populate(Class beanClass, Map<String, String[]> properties) {
    19. try {
    20. Object bean = beanClass.newInstance();
    21. //填充数据
    22. BeanUtils.populate(bean, properties);
    23. return bean;
    24. } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
    25. //将编译时异常,转换成运行时异常,方便调用者(使用者就不需要再处理异常了)
    26. throw new RuntimeException(e);
    27. }
    28. }
    29. }

    测试类

    1. package Day01_Demo.Test06;/*
    2. @create 2020--12--21--15:06
    3. */
    4. import Day01_Demo.Test05.User;
    5. import org.junit.Test;
    6. import java.util.HashMap;
    7. import java.util.Map;
    8. /**
    9. * 测试自定义的方法 - populate
    10. */
    11. public class MyBeanUtilsTest {
    12. @Test
    13. public void test1() {
    14. Map<String, String[]> map = new HashMap<>();
    15. map.put("uid", new String[]{"u007"});
    16. map.put("username", new String[]{"王语嫣","段誉"});
    17. map.put("password", new String[]{"111"});
    18. //2.使用populate
    19. User user = new User();
    20. MyBeanUtils.populate(user, map);//不需要抛异常,因为已经处理了
    21. System.out.println(user);
    22. }
    23. @Test
    24. public void test2() {
    25. Map<String, String[]> map = new HashMap<>();
    26. map.put("uid", new String[]{"u007"});
    27. map.put("username", new String[]{"王语嫣","段誉"});
    28. map.put("password", new String[]{"111"});
    29. //2.使用populate方法进行统一的填写 - 向下转型 - 因为自己封装的方法返回的是Object类型,所以
    30. // 如果要获取指定的类型就必须向下转型
    31. User user = (User) MyBeanUtils.populate(User.class, map);
    32. System.out.println(user);
    33. }
    34. }