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

Java利用反射動態(tài)設(shè)置對象字段值的實現(xiàn)

 更新時間:2024年01月04日 09:24:54   作者:chao09_01  
橋梁信息維護(hù)需要做到字段級別的權(quán)限控制,本文主要介紹了Java利用反射動態(tài)設(shè)置對象字段值的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

項目場景:

橋梁信息維護(hù)需要做到字段級別的權(quán)限控制(包括增刪改查),設(shè)計包含字段權(quán)限配置、字段權(quán)限級別管理維護(hù)接口兩大部分。

1)字段權(quán)限配置可參考常見的用戶角色管理設(shè)計;

2)對于增刪改操作,出入?yún)⒖蓞⒖汲S玫淖侄蝹鲄ⅲ粚τ诓檎也僮?,返回每一個字段定義可參考如下:

@Data
public class BridgeFieldDTO {
    /**
     * 是否顯示
     */
    private Boolean show = false;
    /**
     * 字段取值
     */
    private Object value;
    /**
     * 字段翻譯
     */
    private String valueTranslation;
}

字段級別的權(quán)限控制可參考如下思路實現(xiàn):

1)按照正常邏輯接受或者查詢結(jié)果

2)建立新對象,根據(jù)字段級別權(quán)限控制將接受或查詢結(jié)果放到新對象中;

增刪改情況,沒有字段權(quán)限的字段設(shè)置成null值;

查詢情況,每個字段按照上述字段定義進(jìn)行返回;

如何做到字段級別的權(quán)限控制,以下是java利用反射機(jī)制實現(xiàn)的參考代碼:

其中核心方法包括:

獲取字段屬性:

Class<?> originClazz = NavigableBridgePO.class;
Field[] fields = originClazz.getDeclaredFields();
Map<String,Class> fieldMap = new HashMap<>();
for(Field field: fields){
    fieldMap.put(field.getName(),field.getType());
}

讀數(shù)據(jù):

Class<?> originClazz = NavigableBridgePO.class;
Method getMethod = originClazz.getMethod(getMethodName);
Object getValue = getMethod.invoke(navigableBridgePO);

寫數(shù)據(jù):

Class<?> changedClazz = NavigableBridgePO.class;
Method setMethod = changedClazz.getMethod(setMethodName,fieldMap.get(sysRoleFieldPO.getField()));
setMethod.invoke(changedNavigableBridge, getValue);

到此這篇關(guān)于Java利用反射動態(tài)設(shè)置對象字段值的實現(xiàn)的文章就介紹到這了,更多相關(guān)Java動態(tài)設(shè)置對象字段值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java concurrency集合之ConcurrentSkipListMap_動力節(jié)點Java學(xué)院整理

    Java concurrency集合之ConcurrentSkipListMap_動力節(jié)點Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListMap的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 淺談hibernate之映射文件VS映射注解

    淺談hibernate之映射文件VS映射注解

    下面小編就為大家?guī)硪黄獪\談hibernate之映射文件VS映射注解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Spring集成Redis詳解代碼示例

    Spring集成Redis詳解代碼示例

    這篇文章主要介紹了Spring集成Redis詳解代碼示例,介紹了Eclipse工程結(jié)構(gòu),POM依賴,Spring配置,Redis配置信息以及Java代碼等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • arthas排查jvm中CPU占用過高問題解決

    arthas排查jvm中CPU占用過高問題解決

    這篇文章主要介紹了arthas排查jvm中CPU占用過高問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • MyBatis Generator配置生成接口和XML映射文件的實現(xiàn)

    MyBatis Generator配置生成接口和XML映射文件的實現(xiàn)

    本文介紹了配置MBG以生成Mapper接口和XML映射文件,過合理使用MBG和自定義生成策略,可以有效解決生成的Example類可能帶來的問題,使代碼更加簡潔和易于維護(hù)
    2025-02-02
  • IDEA配置文件application.properties亂碼問題及解決過程

    IDEA配置文件application.properties亂碼問題及解決過程

    在IntelliJ IDEA中打開application.properties時,中文注釋出現(xiàn)亂碼,原因多為文件編碼設(shè)置不正確,即使顯示UTF-8仍可能亂碼,解決方法是設(shè)置屬性文件默認(rèn)編碼為UTF-8,保存后注釋可正常顯示
    2025-09-09
  • MybatisPlus多表連接查詢的具體實現(xiàn)

    MybatisPlus多表連接查詢的具體實現(xiàn)

    MyBatis Plus是一款針對MyBatis框架的增強(qiáng)工具, 它提供了很多方便的方法來實現(xiàn)多表聯(lián)查,本文主要介紹了MybatisPlus多表連接查詢的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Java 非阻塞I/O使用方法

    Java 非阻塞I/O使用方法

    這篇文章主要介紹了Java 非阻塞I/O使用方法,文中涉及非阻塞I/O的簡介,同時向大家展示了利用非阻塞I/O實現(xiàn)客戶端的方法,需要的朋友可以參考下。
    2017-09-09
  • java通過共享變量結(jié)束run停止線程的方法示例

    java通過共享變量結(jié)束run停止線程的方法示例

    這篇文章主要介紹了java通過共享變量結(jié)束run停止線程的方法,大家參考使用
    2013-11-11
  • 前端和后端時間不一致問題解決的實踐指南

    前端和后端時間不一致問題解決的實踐指南

    這篇文章主要給大家介紹了關(guān)于前端和后端時間不一致問題解決的實踐指南,在SpringBoot項目中,可以通過設(shè)置application.yml文件中的屬性來統(tǒng)一時間格式和時區(qū),從而確保序列化和反序列化過程中的時間和時區(qū)一致性,需要的朋友可以參考下
    2025-01-01

最新評論

吐鲁番市| 云和县| 新郑市| 拜泉县| 额济纳旗| 拜泉县| 敦煌市| 咸丰县| 凌云县| 忻州市| 东至县| 三穗县| 利津县| 克什克腾旗| 高雄市| 金华市| 罗山县| 富顺县| 四川省| 明光市| 额济纳旗| 福泉市| 香河县| 兴化市| 台江县| 峨眉山市| 庆城县| 广州市| 崇州市| 万源市| 浙江省| 枝江市| 抚州市| 都匀市| 胶南市| 铜梁县| 图木舒克市| 东乡| 南木林县| 九龙坡区| 武汉市|