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

如何只返回實(shí)體類中的部分字段問題

 更新時(shí)間:2023年05月15日 14:40:15   作者:來齊  
這篇文章主要介紹了如何只返回實(shí)體類中的部分字段問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

如何只返回實(shí)體類中的部分字段

在實(shí)體類上添加注解

@JsonInclude(JsonInclude.Include.NON_EMPTY)

表示實(shí)體類中為null,空字符串,空集合數(shù)組等內(nèi)容不會(huì)被序列化,即不會(huì)返回字段和值。

以下為對(duì)注解所有取值的簡(jiǎn)介

ALWAYS // 默認(rèn)策略,任何情況都執(zhí)行序列化
NON_NULL // 非空
NON_ABSENT // null的不會(huì)序列化,但如果類型是AtomicReference,依然會(huì)被序列化
NON_EMPTY // null、集合數(shù)組等沒有內(nèi)容、空字符串等,都不會(huì)被序列化
NON_DEFAULT // 如果字段是默認(rèn)值,就不會(huì)被序列化
CUSTOM // 此時(shí)要指定valueFilter屬性,該屬性對(duì)應(yīng)一個(gè)類,用來自定義判斷被JsonInclude修飾的字段是否序列化
USE_DEFAULTS // 當(dāng)JsonInclude在類和屬性上都有時(shí),優(yōu)先使用屬性上的注解,此時(shí)如果在序列化的get方法上使用了JsonInclude,并設(shè)置為USE_DEFAULTS,就會(huì)使用類注解的設(shè)置

java動(dòng)態(tài)添加實(shí)體類字段并返回給前端

工具類

package com.bless.wms.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtilsBean;
import org.springframework.cglib.beans.BeanGenerator;
import org.springframework.cglib.beans.BeanMap;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
/**
 * 動(dòng)態(tài)添加實(shí)體類字段
 */
@Slf4j
public final class PropertyAppender {
    private static final class DynamicBean {
        private Object target;
        private BeanMap beanMap;
        private DynamicBean(Class superclass, Map<String, Class> propertyMap) {
            this.target = generateBean(superclass, propertyMap);
            this.beanMap = BeanMap.create(this.target);
        }
        private void setValue(String property, Object value) {
            beanMap.put(property, value);
        }
        private Object getValue(String property) {
            return beanMap.get(property);
        }
        private Object getTarget() {
            return this.target;
        }
        /**
         * 根據(jù)屬性生成對(duì)象
         */
        private Object generateBean(Class superclass, Map<String, Class> propertyMap) {
            BeanGenerator generator = new BeanGenerator();
            if (null != superclass) {
                generator.setSuperclass(superclass);
            }
            BeanGenerator.addProperties(generator, propertyMap);
            return generator.create();
        }
    }
    public static Object generate(Object dest, Map<String, Object> newValueMap) throws InvocationTargetException, IllegalAccessException {
        PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
        //1.獲取原對(duì)象的字段數(shù)組
        PropertyDescriptor[] descriptorArr = propertyUtilsBean.getPropertyDescriptors(dest);
        //2.遍歷原對(duì)象的字段數(shù)組,并將其封裝到Map
        Map<String, Class> oldKeyMap = new HashMap<>();
        for (PropertyDescriptor it : descriptorArr) {
            if (!"class".equalsIgnoreCase(it.getName())) {
                oldKeyMap.put(it.getName(), it.getPropertyType());
                newValueMap.put(it.getName(), it.getReadMethod().invoke(dest));
            }
        }
        //3.將擴(kuò)展字段Map合并到原字段Map中
        newValueMap.forEach((k, v) -> oldKeyMap.put(k, v.getClass()));
        //4.根據(jù)新的字段組合生成子類對(duì)象
        DynamicBean dynamicBean = new DynamicBean(dest.getClass(), oldKeyMap);
        //5.放回合并后的屬性集合
        newValueMap.forEach((k, v) -> {
            try {
                dynamicBean.setValue(k, v);
            } catch (Exception e) {
                log.error("動(dòng)態(tài)添加字段【值】出錯(cuò)", e);
            }
        });
        return dynamicBean.getTarget();
    }
}

調(diào)用

前端接口調(diào)用測(cè)試

備注:前端表格直接for循環(huán)動(dòng)態(tài)渲染就OK了

總結(jié)

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

相關(guān)文章

  • 拉鉤網(wǎng)java筆試題分享

    拉鉤網(wǎng)java筆試題分享

    這篇文章主要介紹了拉鉤網(wǎng)java筆試題分享,下面是題目和實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-05-05
  • Spring Boot 3.4.0 結(jié)合 Mybatis-plus 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源的完整方案

    Spring Boot 3.4.0 結(jié)合 Mybatis-plus 實(shí)

    本文詳細(xì)介紹了在 Spring Boot 3.4.0 項(xiàng)目中結(jié)合 Mybatis-plus 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的完整方案,通過自定義注解和AOP切面,我們可以優(yōu)雅地實(shí)現(xiàn)方法級(jí)別的數(shù)據(jù)源切換,滿足多數(shù)據(jù)源場(chǎng)景下的各種需求,感興趣的朋友一起看看吧
    2025-04-04
  • C++享元模式詳解

    C++享元模式詳解

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之享元模式Flyweight,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決IDEA 左側(cè)Project中沒有out文件夾的問題

    解決IDEA 左側(cè)Project中沒有out文件夾的問題

    這篇文章主要介紹了解決IDEA 左側(cè)Project中沒有out文件夾的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot整合JDBC、Druid數(shù)據(jù)源的示例代碼

    SpringBoot整合JDBC、Druid數(shù)據(jù)源的示例代碼

    這篇文章主要介紹了SpringBoot整合JDBC、Druid數(shù)據(jù)源,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Java 數(shù)據(jù)庫連接池c3p0 介紹

    Java 數(shù)據(jù)庫連接池c3p0 介紹

    這篇文章主要介給大家分享了 Java 數(shù)據(jù)庫連接池c3p0 介紹,c3p0 是一個(gè)成熟的、高并發(fā)的 JDBC 連接池庫,支持緩存和 PreparedStatements 的重用。它以LGPL v.2.1或EPL v.1.0授權(quán),下面我們就一起來看看文章內(nèi)容的詳細(xì)介紹吧,需要的朋友也可以參考一下
    2021-11-11
  • SpringBoot自定義配置項(xiàng)過程

    SpringBoot自定義配置項(xiàng)過程

    在SpringBoot項(xiàng)目中,通過在application.properties文件中添加配置項(xiàng),然后使用@ConfigurationProperties注解將這些配置項(xiàng)與實(shí)體Bean進(jìn)行綁定,可以實(shí)現(xiàn)配置項(xiàng)與實(shí)體類字段的自動(dòng)關(guān)聯(lián),進(jìn)而方便地讀取配置文件中的數(shù)據(jù),這種方法不僅簡(jiǎn)化了配置管理
    2024-11-11
  • 第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦)

    第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦)

    這篇文章主要介紹了第一次使用Android Studio時(shí)你應(yīng)該知道的一切配置(推薦) ,需要的朋友可以參考下
    2017-09-09
  • servlet簡(jiǎn)單實(shí)現(xiàn)文件下載的方法

    servlet簡(jiǎn)單實(shí)現(xiàn)文件下載的方法

    這篇文章主要介紹了servlet簡(jiǎn)單實(shí)現(xiàn)文件下載的方法,涉及基于servlet技術(shù)實(shí)現(xiàn)流形式文件傳輸?shù)南嚓P(guān)操作技巧,需要的朋友可以參考下
    2016-12-12
  • Java經(jīng)典用法總結(jié)

    Java經(jīng)典用法總結(jié)

    這篇文章主要介紹了Java經(jīng)典用法總結(jié),在本文中,盡量收集一些java最常用的習(xí)慣用法,特別是很難猜到的用法,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評(píng)論

井研县| 平凉市| 兴安县| 乳源| 安泽县| 福鼎市| 冕宁县| 鹤庆县| 庆元县| 东平县| 佛山市| 邵东县| 瓦房店市| 桃园县| 松滋市| 东港市| 嘉义市| 社旗县| 绥芬河市| 阿瓦提县| 洛浦县| 诸城市| 泽库县| 嘉峪关市| 工布江达县| 富民县| 平湖市| 石泉县| 新宁县| 淳化县| 田阳县| 手机| 高青县| 湟中县| 大洼县| 广水市| 阿克| 奉新县| 丰县| 龙里县| 海原县|