數據庫樹狀結構數據查詢


思路:

  1.根據條件先查詢所有一級目錄,將數據使用對象Object封裝並將對象存放到集合list1中;

  2.遍歷list1 ;

  3.根據條件查詢一級目錄各對應的子目錄將數據存儲到對象Object中;

  4.返回list1;

eg:

  SQL:

INSERT INTO gjyf_kpis.qaa_publish_portfolio_config (id,category_code,parent_code,publish_id,publish_allocation_id,category_name) VALUES
('1186921770763141120','combName','0','1186907623314702337','1186907623314702336','組合')
,('1186921770796695552','equity-reits','0','1186907623314702337','1186907623314702336','權益類')
,('1186921770830249984','stocks','equity-reits','1186907623314702337','1186907623314702336','股票')
,('1186921770863804416','hStock','equity-reits','1186907623314702337','1186907623314702336','港股')
,('1186921770901553152','covtBonds','equity-reits','1186907623314702337','1186907623314702336','轉債')
,('1186921770930913280','fixed-income','0','1186907623314702337','1186907623314702336','固收類')
,('1186921770960273408','bonds','fixed-income','1186907623314702337','1186907623314702336','債券')
,('1186921770993827840','cash-assets','0','1186907623314702337','1186907623314702336','現金類')
,('1186921771035770880','monetarys','cash-assets','1186907623314702337','1186907623314702336','貨幣')
,('1186921771069325312','others-income','0','1186907623314702337','1186907623314702336','其它類')
;
INSERT INTO gjyf_kpis.qaa_publish_portfolio_config (id,category_code,parent_code,publish_id,publish_allocation_id,category_name) VALUES
('1186921771098685440','qdllStock','others-income','1186907623314702337','1186907623314702336','QDII股')
,('1186921771132239872','qdllBond','others-income','1186907623314702337','1186907623314702336','QDII債')
,('1186921771161600000','crude','others-income','1186907623314702337','1186907623314702336','原油')
,('1186921771199348736','hedgeFund','others-income','1186907623314702337','1186907623314702336','對沖基金')
;

  JAVA:

//查詢數據結果封裝類

import lombok.Data;

@Data
public class QaaKnv {
    
    private String name;
    
    private String value;
    
    private Object data;

    public QaaKnv(String name, String value) {
        super();
        this.name = name;
        this.value = value;
    }
    
    public QaaKnv(String key, String name, String value) {
        super();
        this.name = name;
        this.value = value;
    }

    public QaaKnv setData(Object data) {
        this.data = data;
        return this;
    }
    
}

 

 /**
     * 查詢表頭信息
     */
    public Object selectPublishPortfolioConfigHeader(String publishId, String publishAllocationId) {
     
        List<PublishPortfolioConfig> publishPortfolioConfigs = this.selectPublishPortfolioConfig(publishId,publishAllocationId);
        
        List<QaaKnv> allResult = ListUtils.newArrayList();
        //一級
        for (PublishPortfolioConfig ppfc : publishPortfolioConfigs) {
            if("0".equals(ppfc.getParentCode())) {
                allResult.add(new QaaKnv(ppfc.getCategoryName(), ppfc.getCategoryCode()));
            }
        }
        //二級
        for (QaaKnv qaaKnv : allResult) {
            List<QaaKnv> leve2Kv= ListUtils.newArrayList();
            for (PublishPortfolioConfig ppfc : publishPortfolioConfigs) {
                if(!"0".equals(ppfc.getParentCode()) &&
                        ppfc.getParentCode().equals(qaaKnv.getValue())) {
                    
                    leve2Kv.add(new QaaKnv(ppfc.getCategoryName(), ppfc.getCategoryCode()));
                }
            }
            if(leve2Kv.size()>0) {
                qaaKnv.setData(leve2Kv);
            }
        }
        
        return allResult;
    }

  //測試結果

[
{
"name": "組合",
"value": "combName"
},
{
"name": "權益類",
"value": "equity-reits",
"data": [
{
"name": "股票",
"value": "stocks"
},
{
"name": "港股",
"value": "hStock"
},
{
"name": "轉債",
"value": "covtBonds"
}
]
},
{
"name": "固收類",
"value": "fixed-income",
"data": [
{
"name": "債券",
"value": "bonds"
}
]
},
{
"name": "現金類",
"value": "cash-assets",
"data": [
{
"name": "貨幣",
"value": "monetarys"
}
]
},
{
"name": "其它類",
"value": "others-income",
"data": [
{
"name": "QDII股",
"value": "qdllStock"
},
{
"name": "QDII債",
"value": "qdllBond"
},
{
"name": "原油",
"value": "crude"
},
{
"name": "對沖基金",
"value": "hedgeFund"
}
]
}
]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM