欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaBean和Map轉(zhuǎn)換封裝類的方法

 更新時間:2016年10月12日 09:40:40   投稿:jingxian  
下面小編就為大家?guī)硪黄狫avaBean和Map轉(zhuǎn)換封裝類的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

實(shí)例如下:

package com.ljq.util;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * Map工具類
 *
 * @author jqlin
 */
public class MapUtils {

  /**
   * 從map集合中獲取屬性值
   * 
   * @param <E>
   * @param map
   *      map集合
   * @param key
   *      鍵對
   * @param defaultValue
   *      默認(rèn)值
   * @return
   * @author jiqinlin
   */
  @SuppressWarnings({ "unchecked", "rawtypes" })
  public final static <E> E get(Map map, Object key, E defaultValue) {
    Object o = map.get(key);
    if (o == null)
      return defaultValue;
    return (E) o;
  }
  
  /**
   * Map集合對象轉(zhuǎn)化成 JavaBean集合對象
   * 
   * @param javaBean JavaBean實(shí)例對象
   * @param mapList Map數(shù)據(jù)集對象
   * @return
   * @author jqlin
   */
  @SuppressWarnings({ "rawtypes" })
  public static <T> List<T> map2Java(T javaBean, List<Map> mapList) {
    if(mapList == null || mapList.isEmpty()){
      return null;
    }
    List<T> objectList = new ArrayList<T>();
    
    T object = null;
    for(Map map : mapList){
      if(map != null){
        object = map2Java(javaBean, map);
        objectList.add(object);
      }
    }
    
    return objectList;
    
  }
  
  /**
   * Map對象轉(zhuǎn)化成 JavaBean對象
   * 
   * @param javaBean JavaBean實(shí)例對象
   * @param map Map對象
   * @return
   * @author jqlin
   */
  @SuppressWarnings({ "rawtypes","unchecked", "hiding" })
  public static <T> T map2Java(T javaBean, Map map) {
    try {
      // 獲取javaBean屬性
      BeanInfo beanInfo = Introspector.getBeanInfo(javaBean.getClass());
      // 創(chuàng)建 JavaBean 對象
      Object obj = javaBean.getClass().newInstance();

      PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
      if (propertyDescriptors != null && propertyDescriptors.length > 0) {
        String propertyName = null; // javaBean屬性名
        Object propertyValue = null; // javaBean屬性值
        for (PropertyDescriptor pd : propertyDescriptors) {
          propertyName = pd.getName();
          if (map.containsKey(propertyName)) {
            propertyValue = map.get(propertyName);
            pd.getWriteMethod().invoke(obj, new Object[] { propertyValue });
          }
        }
        return (T) obj;
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return null;
  }

  /**
   * JavaBean對象轉(zhuǎn)化成Map對象
   * 
   * @param javaBean
   * @return
   * @author jqlin
   */
  @SuppressWarnings({ "rawtypes", "unchecked" })
  public static Map java2Map(Object javaBean) {
    Map map = new HashMap();
     
    try {
      // 獲取javaBean屬性
      BeanInfo beanInfo = Introspector.getBeanInfo(javaBean.getClass());

      PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
      if (propertyDescriptors != null && propertyDescriptors.length > 0) {
        String propertyName = null; // javaBean屬性名
        Object propertyValue = null; // javaBean屬性值
        for (PropertyDescriptor pd : propertyDescriptors) {
          propertyName = pd.getName();
          if (!propertyName.equals("class")) {
            Method readMethod = pd.getReadMethod();
            propertyValue = readMethod.invoke(javaBean, new Object[0]);
            map.put(propertyName, propertyValue);
          }
        }
      }
      
    } catch (Exception e) {
      e.printStackTrace();
    } 
    
    return map;
  }
 
}

以上就是小編為大家?guī)淼腏avaBean和Map轉(zhuǎn)換封裝類的方法全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • 簡單解析execute和submit有什么區(qū)別

    簡單解析execute和submit有什么區(qū)別

    這篇文章主要介紹了簡單解析execute和submit有什么區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 使用SpringBoot項(xiàng)目導(dǎo)入openfeign版本的問題

    使用SpringBoot項(xiàng)目導(dǎo)入openfeign版本的問題

    這篇文章主要介紹了使用SpringBoot項(xiàng)目導(dǎo)入openfeign版本的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java如何讀取jar包中的resource資源文件

    Java如何讀取jar包中的resource資源文件

    這篇文章主要介紹了Java如何讀取jar包中的resource資源文件,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java并發(fā)系列之CountDownLatch源碼分析

    Java并發(fā)系列之CountDownLatch源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之CountDownLatch源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Spring事務(wù)管理詳細(xì)講解

    Spring事務(wù)管理詳細(xì)講解

    事務(wù)的作用就是為了保證用戶的每一個操作都是可靠的,事務(wù)中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就?回退到事務(wù)開始未進(jìn)行操作的狀態(tài)。事務(wù)管理是Spring框架中最為常用的功能之一,我們在使用Spring?Boot開發(fā)應(yīng)用時,大部分情況下也都需要使用事務(wù)
    2022-10-10
  • java獲取類名的方法詳解

    java獲取類名的方法詳解

    這篇文章主要介紹了java獲取類名的問題詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • java面向?qū)ο笤O(shè)計(jì)原則之開閉原則示例解析

    java面向?qū)ο笤O(shè)計(jì)原則之開閉原則示例解析

    這篇文章主要介紹了java面向?qū)ο笤O(shè)計(jì)原則之開閉原則的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • Java使用POI實(shí)現(xiàn)導(dǎo)出Excel的方法詳解

    Java使用POI實(shí)現(xiàn)導(dǎo)出Excel的方法詳解

    在項(xiàng)目開發(fā)中往往需要使用到Excel的導(dǎo)入和導(dǎo)出,導(dǎo)入就是從Excel中導(dǎo)入到DB中,而導(dǎo)出就是從DB中查詢數(shù)據(jù)然后使用POI寫到Excel上。本文將利用POI實(shí)現(xiàn)導(dǎo)出Excel,需要的可以參考一下
    2022-10-10
  • Java基于API接口爬取商品數(shù)據(jù)的示例代碼

    Java基于API接口爬取商品數(shù)據(jù)的示例代碼

    Java作為一種流行的編程語言,可以用于編寫程序來調(diào)用這些API接口,從而獲取商品數(shù)據(jù),本文將介紹如何使用Java基于API接口爬取商品數(shù)據(jù),包括請求API、解析JSON數(shù)據(jù)、存儲數(shù)據(jù)等步驟,并提供相應(yīng)的代碼示例,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • springboot攔截器不攔截靜態(tài)資源,只攔截controller的實(shí)現(xiàn)方法

    springboot攔截器不攔截靜態(tài)資源,只攔截controller的實(shí)現(xiàn)方法

    這篇文章主要介紹了springboot攔截器不攔截靜態(tài)資源,只攔截controller的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論