JAVA中map转换成实体对象

2022/3/21 17:28:26

本文主要是介绍JAVA中map转换成实体对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

/**

  • @ClassName:QueryVOToBeanUtil

  • @author: 短笛吟风

  • @description:TODO

  • @createDate: 2020/2/18

  • @version: 1.0
    */
    public class QueryVOToBeanUtil {

    /**

    • 将JavaBean转换成Map

    • @param obj

    • @return

    • @throws SecurityException

    • @throws NoSuchMethodException

    • @throws InvocationTargetException

    • @throws IllegalArgumentException

    • @throws IllegalAccessException
      */
      public static Map beanToMap(Object obj) throws NoSuchMethodException, SecurityException, IllegalAccessException,
      IllegalArgumentException, InvocationTargetException {
      // 创建map集合
      Map map = new HashMap();
      // 获取JavaBean中所有属性
      Field[] fields = obj.getClass().getDeclaredFields();

      for (Field fie : fields) {

       // 将属性第一个字母转换成大写
       String frist = fie.getName().substring(0, 1).toUpperCase();
       // 获取属性的类型
       Class<?> type = fie.getType();
       // 封装属性的get
       String getter = "";
       if ("boolean".equals(type.getName())) {
           getter = "is" + frist + fie.getName().substring(1);
       } else {
           getter = "get" + frist + fie.getName().substring(1);
       }
       // 获取JavaBean的方法
       Method method = obj.getClass().getMethod(getter, new Class[] {});
       // 调用方法,并接收返回值
       Object objec = method.invoke(obj, new Object[] {});
      
       // 判断返回值不为空
       if (objec != null) {
           map.put(fie.getName(), objec);
       } else {
           map.put(fie.getName(), "");
       }
      

      }

      return map;
      }

    /**

    • 将Map转换为JavaBean

    • @param map

    • @param obj

    • @return

    • @throws SecurityException

    • @throws NoSuchMethodException

    • @throws InvocationTargetException

    • @throws IllegalArgumentException

    • @throws IllegalAccessException
      */
      public static Object mapToBean(Map<String, Object> map, Object obj) throws NoSuchMethodException, SecurityException,
      IllegalAccessException, IllegalArgumentException, InvocationTargetException {

      // 获取JavaBean中的所有属性
      Field[] field = obj.getClass().getDeclaredFields();

      for (Field fi : field) {
      // 判断key值是否存在
      String fildname=addStringXhx(fi.getName());
      if (map.containsKey(fildname)) {
      // 获取key的value值

           String value = map.get(fildname).toString();
           // 将属性的第一个字母转换为大写
           String frist = fi.getName().substring(0, 1).toUpperCase();
           // 属性封装set方法
           String setter = "set" + frist + fi.getName().substring(1);
           // 获取当前属性类型
           Class<?> type = fi.getType();
           // 获取JavaBean的方法,并设置类型
           Method method = obj.getClass().getMethod(setter, type);
      
           // 判断属性为double类型
           if ("java.lang.String".equals(type.getName())) {
      
               // 调用当前Javabean中set方法,并传入指定类型参数
               method.invoke(obj, value);
      
           } else if ("int".equals(type.getName())) {
      
               method.invoke(obj, Integer.parseInt(value));
      
           }else if ("double".equals(type.getName())) {
      
               method.invoke(obj, Double.valueOf(value));
      
      
           } else if ("char".equals(type.getName())) {
      
               method.invoke(obj, value);
      
           }
       }
      

      }

      return obj;
      }

    private static String addStringXhx(String name) {

     StringBuilder stringBuilder=new StringBuilder(name.length()+5);
     int len=name.length();
     for(int i=0;i<len;i++){
         char c = name.charAt(i);
         if(Character.isUpperCase(c)){
             stringBuilder.append("_"+Character.toLowerCase(c));
         }else{
             stringBuilder.append(c);
         }
    
     }
     return stringBuilder.toString();
    

    }

    /**

    • 将List<Map<String,Object>>转换成List

    • @param listm

    • @param obj

    • @return

    • @throws InvocationTargetException

    • @throws IllegalArgumentException

    • @throws IllegalAccessException

    • @throws SecurityException

    • @throws NoSuchMethodException
      */
      public static List ListMapToListBean(List<Map<String, Object>> listm, Object obj)
      throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
      InvocationTargetException {

      List list = new ArrayList();
      // 循环遍历出map对象
      for (Map<String, Object> m : listm) {
      // 调用将map转换为JavaBean的方法
      Object objs = mapToBean(m, obj);
      // 添加进list集合
      list.add(objs);
      }

      return list;
      }

    /**

    • 将list转换为List

    • @param list

    • @return

    • @throws NoSuchMethodException

    • @throws SecurityException

    • @throws IllegalAccessException

    • @throws IllegalArgumentException

    • @throws InvocationTargetException
      */
      public static List<Map<String, Object>> ListBeanToListMap(List list) throws NoSuchMethodException,
      SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {

      List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();

      for (Object ob : list) {

       listmap.add(beanToMap(ob));
      

      }

      return listmap;
      }

}



这篇关于JAVA中map转换成实体对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程