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

Map與JavaBean相互轉(zhuǎn)換的工具類?

 更新時間:2022年02月18日 16:52:28   作者:梁云亮  
這篇文章主要介紹了Map與JavaBean相互轉(zhuǎn)換的工具類,在做導(dǎo)入的時候,遇到了需要將map對象轉(zhuǎn)化?成javabean的問題,也就是說,不清楚javabean的內(nèi)部字段排列,只知道m(xù)ap的?key代表javabean的字段名,value代表值,需要的朋友可以參考下

下面就來分享工具類的內(nèi)容:

使用范圍:JavaBean類對象的屬性不能是數(shù)組、List、Set、Map

public class MapBeanUtil {

? ? /**
? ? ?* JavaBean轉(zhuǎn)Map
? ? ?* @param obj
? ? ?* @return
? ? ?*/
? ? public static Map<String, Object> bean2Map(Object obj) {
? ? ? ? Map<String, Object> map = new LinkedHashMap<>();
? ? ? ? Class<?> clazz = obj.getClass();

? ? ? ? for (Field field : clazz.getDeclaredFields()) {
? ? ? ? ? ? field.setAccessible(true);
? ? ? ? ? ? String fieldName = field.getName();
? ? ? ? ? ? Object value = null;
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? value = field.get(obj);
? ? ? ? ? ? } catch (IllegalAccessException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? ? ? if (value == null){
? ? ? ? ? ? ? ? value = "";
? ? ? ? ? ? }
? ? ? ? ? ? map.put(fieldName, value);
? ? ? ? }
? ? ? ? return map;
? ? }

? ? /**
? ? ?* Map轉(zhuǎn)JavaBean
? ? ?* @param clazz
? ? ?* @param map
? ? ?* @param <T>
? ? ?* @return
? ? ?*/
? ? public static <T> T map2Bean(final Class<T> clazz, final Map<String, ? extends Object> map) {
? ? ? ? if (map == null) {
? ? ? ? ? ? return null;
? ? ? ? }
? ? ? ? T res = null;
? ? ? ? try {
? ? ? ? ? ? res = clazz.getDeclaredConstructor().newInstance();
? ? ? ? ? ? //獲取到所有屬性,不包括繼承的屬性
? ? ? ? ? ? Field[] fields = clazz.getDeclaredFields();
? ? ? ? ? ? for (Field field : fields) {
? ? ? ? ? ? ? ? //獲取字段的修飾符
? ? ? ? ? ? ? ? int mod = field.getModifiers();
? ? ? ? ? ? ? ? if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //設(shè)置對象的訪問權(quán)限
? ? ? ? ? ? ? ? field.setAccessible(true);
? ? ? ? ? ? ? ? //根據(jù)屬性名稱去map獲取value
? ? ? ? ? ? ? ? if(map.containsKey(field.getName())) {
? ? ? ? ? ? ? ? ? ? //給對象賦值
? ? ? ? ? ? ? ? ? ? field.set(res, map.get(field.getName()));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? return res;
? ? }

? ? public static void main(String[] args) throws Exception {
? ? ? ? HashMap<String, Object> map = new HashMap<>();
? ? ? ? map.put("id", 1001);
? ? ? ? map.put("username", "zhangsan");
? ? ? ? map.put("password", "123456");
? ? ? ? map.put("nickname", "張三");
? ? ? ? map.put("email", "369950806@qq.com");
? ? ? ? map.put("gender", true);
? ? ? ? map.put("birth", LocalDate.now());
? ? ? ? map.put("avatar", "/aa/bb/ab.jpg");
? ? ? ? map.put("role", "VIP");
? ? ? ? map.put("status", (byte) 1);
? ? ? ? map.put("salt", "ldfkasjghweoiq324");
? ? ? ? map.put("createTime", LocalDateTime.now());
? ? ? ? map.put("updateTime", LocalDateTime.now());

? ? ? ? User user = map2Bean(User.class, map);
? ? ? ? System.out.println(user);

? ? ? ? Map<String, Object> res = bean2Map(user);
? ? ? ? System.out.println(map);
? ? }
}

User類的代碼:

public class User {
? ? private Integer id;
? ? private String username;
? ? private String password;
? ? private String nickname;
? ? private String email;
? ? private Boolean gender;
? ? private LocalDate birth;
? ? private String avatar;
? ? private String role;
? ? private Byte status;
? ? private String salt;
? ? private LocalDateTime createTime;
? ? private LocalDateTime updateTime;
}

到此這篇關(guān)于Map與JavaBean相互轉(zhuǎn)換的工具類 的文章就介紹到這了,更多相關(guān)Map與JavaBean相互轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java聯(lián)調(diào)生成測試數(shù)據(jù)工具類方式

    java聯(lián)調(diào)生成測試數(shù)據(jù)工具類方式

    這篇文章主要介紹了java聯(lián)調(diào)生成測試數(shù)據(jù)工具類方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringBoot使用布隆過濾器解決緩存穿透問題

    SpringBoot使用布隆過濾器解決緩存穿透問題

    緩存穿透是指當(dāng)緩存系統(tǒng)中無法命中需要的數(shù)據(jù)時,會直接請求底層存儲系統(tǒng)(如數(shù)據(jù)庫),但是如果請求的數(shù)據(jù)根本不存在,那么大量的請求就會直接穿透緩存層,本文將給大家介紹一下SpringBoot使用布隆過濾器解決緩存穿透問題,需要的朋友可以參考下
    2023-10-10
  • Java設(shè)計模式中橋接模式應(yīng)用詳解

    Java設(shè)計模式中橋接模式應(yīng)用詳解

    橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊。橋接模式將系統(tǒng)的抽象部分與實現(xiàn)部分分離解耦,使他們可以獨立的變化。本文通過示例詳細介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-11-11
  • Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決

    Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決

    這篇文章主要給大家介紹了關(guān)于Spring?Initializr只能創(chuàng)建為Java?17版本以上問題的解決辦法,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Druid如何平行替換為Hikari

    Druid如何平行替換為Hikari

    這篇文章主要介紹了Druid如何平行替換為Hikari問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Maven管理SpringBoot Profile詳解

    Maven管理SpringBoot Profile詳解

    這篇文章主要介紹了Maven管理SpringBoot Profile詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • 詳解Spring中Spel表達式和el表達式的區(qū)別

    詳解Spring中Spel表達式和el表達式的區(qū)別

    在?Java?開發(fā)中,表達式語言是一種強大的工具,而SpEL?表達式與EL?表達式是我們常常遇到兩種表達式語言,下面我們就來看看它們的具體使用與區(qū)別吧
    2023-07-07
  • mybatisplus自動填充屬性值的實現(xiàn)步驟

    mybatisplus自動填充屬性值的實現(xiàn)步驟

    MyBatis-Plus提供自動填充的功能,幫助自定設(shè)置這些字段的值,提升開發(fā)效率,本文就來介紹一下如何使用,感興趣的可以了解一下
    2023-12-12
  • IntelliJ IDEA中Scala、sbt、maven配置教程

    IntelliJ IDEA中Scala、sbt、maven配置教程

    這篇文章主要介紹了IntelliJ IDEA中Scala、sbt、maven配置教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • springboot使用kafka事務(wù)的示例代碼

    springboot使用kafka事務(wù)的示例代碼

    Kafka?同數(shù)據(jù)庫一樣支持事務(wù),當(dāng)發(fā)生異常的時候可以進行回滾,確保消息監(jiān)聽器不會接收到一些錯誤的或者不需要的消息,本文就來介紹一下springboot使用kafka事務(wù)的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06

最新評論