最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)體類轉(zhuǎn)成map的實(shí)現(xiàn)

 更新時(shí)間:2022年06月21日 11:11:54   作者:南大白  
這篇文章主要介紹了java實(shí)體類轉(zhuǎn)成map的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java實(shí)體類轉(zhuǎn)成map

1.第一種

?<!-- 配置gson -->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>com.google.code.gson</groupId>
? ? ? ? ? ? <artifactId>gson</artifactId>
? ? ? ? ? ? <version>2.8.6</version>
? ? ? ? </dependency>
? ? ? ?Map<String, Object> map = null;
? String jsonString = JSONUtil.toJsonStr(uploadBaseEntity);
? ? ? ?Gson gson = new Gson();
? ? ? ? map = new HashMap<>();
? ? ? ? map = gson.fromJson(jsonString, map.getClass());

2.第二種

/**
? ? ?* 對(duì)象轉(zhuǎn)化為Map
? ? ?*
? ? ?* @param obj
? ? ?* @return
? ? ?* @throws Exception
? ? ?*/
? ? public static Map<String, String> objectToMap01(Object obj) throws Exception {
? ? ? ? if (obj == null) {
? ? ? ? ? ? return null;
? ? ? ? }
? ? ? ? Map<String, String> map = new HashMap<String, String>();
?
? ? ? ? Field[] declaredFields = obj.getClass().getDeclaredFields();
? ? ? ? for (Field field : declaredFields) {
? ? ? ? ? ? field.setAccessible(true);
? ? ? ? ? ? map.put(field.getName(), (String) field.get(obj));
? ? ? ? }
?
? ? ? ? return map;
? ? }

java實(shí)體類與map集合互轉(zhuǎn)

廢話不說,直接上代碼!留著用吧...

package com.ddm.message.test;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
?* Java實(shí)體類與Map互轉(zhuǎn)
?* @author Administrator
?*
?*/
public class entityMapTransUtils {
? ? private static final Logger logger = LoggerFactory.getLogger(entityMapTransUtils.class);
? ? /**
? ? ?* Java實(shí)體類轉(zhuǎn)Map:方法一
? ? ?* @param obj
? ? ?* @return
? ? ?*/
? ? public static Map<String, Object> entityToMap1(Object obj){
? ? ? ? Map<String, Object> map = new HashMap<String, Object>();
? ? ? ? Class<?> clazz = obj.getClass();
? ? ? ? for(Field field : clazz.getDeclaredFields()){
? ? ? ? ? ? field.setAccessible(true);
? ? ? ? ? ? String fieldName = field.getName();
? ? ? ? ? ? Object object = null;
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? object = field.get(obj);
? ? ? ? ? ? } catch (IllegalArgumentException | IllegalAccessException e) {
? ? ? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? ? ? }
? ? ? ? ? ? map.put(fieldName, object);
? ? ? ? }
? ? ? ? return map;
? ? }

? ? /**
? ? ?* Java實(shí)體類轉(zhuǎn)Map:方法二
? ? ?* @param obj
? ? ?* @return
? ? ?*/
? ? public static Map<String, Object> entityToMap2(Object obj){
? ? ? ? Map<String, Object> map = new HashMap<String, Object>();
? ? ? ? try {
? ? ? ? ? ? BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
? ? ? ? ? ? PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
? ? ? ? ? ? for (PropertyDescriptor property : propertyDescriptors) {
? ? ? ? ? ? ? ? String key = property.getName();
? ? ? ? ? ? ? ? // 過濾class屬性
? ? ? ? ? ? ? ? if (!key.equals("class")) {
? ? ? ? ? ? ? ? ? ? // 得到property對(duì)應(yīng)的getter方法
? ? ? ? ? ? ? ? ? ? Method getter = property.getReadMethod();
? ? ? ? ? ? ? ? ? ? Object value = getter.invoke(obj);
? ? ? ? ? ? ? ? ? ? map.put(key, value);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? }
? ? ? ? return map;
? ? }
? ??
? ? /**
? ? ?* Map轉(zhuǎn)實(shí)體類:要轉(zhuǎn)換的Map的key跟實(shí)體類屬性名相同的數(shù)據(jù)會(huì)轉(zhuǎn)過去,不相同的字段會(huì)為null
? ? ?* @param clazz
? ? ?* @param map
? ? ?* @return
? ? ?*/
? ? public static <T> T mapToEntity1(Class<T> clazz,Map<String, Object> map){
? ? ? ? T obj = null;
? ? ? ? try {
? ? ? ? ? ? BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
? ? ? ? ? ? obj = clazz.newInstance(); // 創(chuàng)建 JavaBean 對(duì)象
? ? ? ? ? ? PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
? ? ? ? ? ? // 給 JavaBean 對(duì)象的屬性賦值
? ? ? ? ? ? for (int i = 0; i < propertyDescriptors.length; i++) {
? ? ? ? ? ? ? ? PropertyDescriptor descriptor = propertyDescriptors[i];
? ? ? ? ? ? ? ? String propertyName = descriptor.getName();
? ? ? ? ? ? ? ? if (map.containsKey(propertyName)) {
? ? ? ? ? ? ? ? ? ? Object value = map.get(propertyName);
? ? ? ? ? ? ? ? ? ? Object[] args = new Object[1];
? ? ? ? ? ? ? ? ? ? args[0] = value;
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? descriptor.getWriteMethod().invoke(obj, args);
? ? ? ? ? ? ? ? ? ? } catch (InvocationTargetException e) {
? ? ? ? ? ? ? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (IllegalAccessException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? } catch (IntrospectionException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? } catch (IllegalArgumentException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? } catch (InstantiationException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? }
? ? ? ? return (T)obj;
? ? }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中的Consumer、Supply如何實(shí)現(xiàn)多參數(shù)?

    java中的Consumer、Supply如何實(shí)現(xiàn)多參數(shù)?

    Java的Consumer接口只能接受一個(gè)參數(shù),但可以通過自定義接口、使用Tuple或嵌套結(jié)構(gòu)來實(shí)現(xiàn)對(duì)多個(gè)參數(shù)的處理,對(duì)于Supplier接口,它不能接受參數(shù),但可以通過自定義BiSupplier、結(jié)合Function或封裝參數(shù)為對(duì)象來實(shí)現(xiàn)對(duì)兩個(gè)參數(shù)并返回一個(gè)值的功能
    2024-11-11
  • springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的全過程

    springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的全過程

    我們?cè)陂_發(fā)中,調(diào)用第三方接口時(shí),往往是提交數(shù)據(jù),要異步去獲取數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于springboot利用aop實(shí)現(xiàn)接口異步(進(jìn)度條)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • java構(gòu)造函數(shù)的三種類型總結(jié)

    java構(gòu)造函數(shù)的三種類型總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于java構(gòu)造函數(shù)的三種類型總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • Spring?Boot?接口加解密功能實(shí)現(xiàn)

    Spring?Boot?接口加解密功能實(shí)現(xiàn)

    在我們?nèi)粘5腏ava開發(fā)中,免不了和其他系統(tǒng)的業(yè)務(wù)交互,或者微服務(wù)之間的接口調(diào)用;如果我們想保證數(shù)據(jù)傳輸?shù)陌踩?,?duì)接口出參加密,入?yún)⒔饷埽@篇文章主要介紹了Spring?Boot?接口加解密功能實(shí)現(xiàn),需要的朋友可以參考下
    2023-04-04
  • ArrayList在for循環(huán)中使用remove方法移除元素方法介紹

    ArrayList在for循環(huán)中使用remove方法移除元素方法介紹

    這篇文章主要介紹了ArrayList在for循環(huán)中使用remove方法移除元素的內(nèi)容,介紹了具體代碼實(shí)現(xiàn),需要的朋友可以參考下。
    2017-09-09
  • Mybatis中通用Mapper的InsertList()用法

    Mybatis中通用Mapper的InsertList()用法

    文章介紹了通用Mapper中的insertList()方法在批量新增時(shí)的使用方式,包括自增ID和自定義ID的情況,對(duì)于自增ID,使用tk.mybatis.mapper.additional.insert.InsertListMapper包下的insertList()方法;對(duì)于自定義ID,需要重寫insertList()方法
    2025-02-02
  • java實(shí)現(xiàn)String字符串處理各種類型轉(zhuǎn)換

    java實(shí)現(xiàn)String字符串處理各種類型轉(zhuǎn)換

    在日常的程序開發(fā)中,經(jīng)常會(huì)涉及到不同類型之間的轉(zhuǎn)換,本文主要介紹了String字符串處理各種類型轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Java算法實(shí)現(xiàn)楊輝三角的講解

    Java算法實(shí)現(xiàn)楊輝三角的講解

    今天小編就為大家分享一篇關(guān)于Java算法實(shí)現(xiàn)楊輝三角的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java使用Instant時(shí)輸出的時(shí)間比預(yù)期少了八個(gè)小時(shí)

    Java使用Instant時(shí)輸出的時(shí)間比預(yù)期少了八個(gè)小時(shí)

    在Java中,LocalDateTime表示沒有時(shí)區(qū)信息的日期和時(shí)間,而Instant表示基于UTC的時(shí)間點(diǎn),本文主要介紹了Java使用Instant時(shí)輸出的時(shí)間比預(yù)期少了八個(gè)小時(shí)的問題解決,感興趣的可以了解一下
    2024-09-09
  • Java并發(fā)編程示例(八):處理線程的非受檢異常

    Java并發(fā)編程示例(八):處理線程的非受檢異常

    這篇文章主要介紹了Java并發(fā)編程示例(八):處理線程的非受檢異常,Java為我們提供了一種機(jī)制,專門用于處理由Thread對(duì)象拋出的非受檢異常,以避免程序的退出,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

卓尼县| 安阳县| 昌宁县| 康马县| 井陉县| 天柱县| 新巴尔虎右旗| 中牟县| 石棉县| 方城县| 龙南县| 寿阳县| 白水县| 阆中市| 云林县| 如东县| 太和县| 柘城县| 周口市| 石城县| 铜鼓县| 永定县| 京山县| 秭归县| 泰宁县| 金堂县| 烟台市| 正镶白旗| 永城市| 华容县| 乐平市| 西平县| 开化县| 固阳县| 简阳市| 五台县| 元氏县| 安丘市| 景东| 武胜县| 偏关县|