中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java只返回實體類中的部分字段問題如何解決

發布時間:2023-06-20 11:11:01 來源:億速云 閱讀:216 作者:栢白 欄目:開發技術

這篇文章主要介紹了只返回實體類中的部分字段問題如何解決,具有一定借鑒價值,需要的朋友可以參考下。下面就和我一起來看看吧。

如何只返回實體類中的部分字段

在實體類上添加注解

@JsonInclude(JsonInclude.Include.NON_EMPTY)

表示實體類中為null,空字符串,空集合數組等內容不會被序列化,即不會返回字段和值。

以下為對注解所有取值的簡介

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

java動態添加實體類字段并返回給前端

工具類

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;
/**
 * 動態添加實體類字段
 */
@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;
        }
        /**
         * 根據屬性生成對象
         */
        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.獲取原對象的字段數組
        PropertyDescriptor[] descriptorArr = propertyUtilsBean.getPropertyDescriptors(dest);
        //2.遍歷原對象的字段數組,并將其封裝到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.將擴展字段Map合并到原字段Map中
        newValueMap.forEach((k, v) -> oldKeyMap.put(k, v.getClass()));
        //4.根據新的字段組合生成子類對象
        DynamicBean dynamicBean = new DynamicBean(dest.getClass(), oldKeyMap);
        //5.放回合并后的屬性集合
        newValueMap.forEach((k, v) -> {
            try {
                dynamicBean.setValue(k, v);
            } catch (Exception e) {
                log.error("動態添加字段【值】出錯", e);
            }
        });
        return dynamicBean.getTarget();
    }
}

調用

java只返回實體類中的部分字段問題如何解決

前端接口調用測試

java只返回實體類中的部分字段問題如何解決

備注:前端表格直接for循環動態渲染就OK了

以上就是只返回實體類中的部分字段問題如何解決的詳細內容了,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎來億速云行業資訊!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚州市| 福建省| 柳林县| 靖州| 梅河口市| 大英县| 三门县| 泰宁县| 保山市| 南江县| 方城县| 黄浦区| 湖南省| 周宁县| 普安县| 许昌市| 乐业县| 芷江| 上高县| 仁化县| 城固县| 高陵县| 德清县| 手游| 独山县| 亳州市| 霍山县| 高雄县| 滦平县| 根河市| 徐汇区| 长阳| 罗甸县| 临夏市| 安多县| 陕西省| 萝北县| 鄯善县| 依安县| 光泽县| 龙胜|