資料分析
說明:根據頁面的分析
商品分類資訊最外層使用list集合進行包裹,名稱為data list[0][1][2]
一級選單中的使用u:url n:name i:list[二級選單]
二級選單中使用u:url n:name i:list[**選單]
**選單 list
jsonp的呼叫
說明:經返回值準備成jsonp的格式
callback(itemcatresult的json串)
查詢的策略
說明:**的商品分類將資料分為3級.
如何查詢一級選單 parentid = 0;
如何查詢二級選單 parentid= 一級選單的id
如何查詢**選單 parentid= 二級選單的id
總結:由於通過一級選單查詢二級選單.並且二級選單數量眾多,所以迴圈遍歷查詢**選單.這樣資料庫的執行效率太低.
效能優化:
業務能不能再次簡單
能否減少資料庫的呼叫次數.
**優化:
通過特定的資料結構,儲存全部的資料資訊,之後做資料的拼接.
通過只查詢一次資料庫可以實現以上的操作
編輯controller
//通過response物件實現回顯
}
編輯service
/**
* 1.首先查詢全部商品分類資訊
* 2.通過map將資料進行分類儲存
* 3.準備返回值資料itemcatresult物件
* 4.準備一級選單列表集合 data
* 5.datalist賦值新增一級選單
* 6.準備二級選單 list
* 7.將二級選單追加到一級選單中
* 8.準備**選單 list
* 9.將**選單追加大二級選單中
*/@override
public itemcatresult finditemcatall() else
}//通過上述的轉化已經將資料完成了清洗
//定義一級選單資訊
listitemcatdatalist1 = new arraylist();
//開始查詢全部的一級選單
for (itemcat itemcat1 : map.get(0l))
itemcatdata2.setitems(itemcatdatalist3);
itemcatdatalist2.add(itemcatdata2);
}//新增二級選單
itemcatdata1.setitems(itemcatdatalist2);
//將一級選單資訊儲存到一級選單列表中
itemcatdatalist1.add(itemcatdata1);
//控制選單的個數 數量達標後跳出迴圈
if(itemcatdatalist1.size() >13)
break;
}itemcatresult catresult = new itemcatresult();
//儲存一級商品選單資訊
catresult.setitemcats(itemcatdatalist1);
return catresult;
}
jsonp簡單方式呼叫@responsebody
public object finditemcatall(string callback)
乙個c strunct的範例
結構體與類之間的區別在於 結構體中所有成員 包括資料成員和成員函式 預設情況下都是public,而類中所有成員預設情況下都是private。除些之外,兩者可以通用。include include using namespace std struct student student student v...
乙個使用執行緒池的範例(翻譯)
翻譯by lwkl a programming model to use a thread pool by sherwoodhu 許多場合我們需要利用多執行緒來提高我們系統的行為。每個線程式幾乎相同,但我們必須管理這些執行緒。如果當系統繁忙了,那麼我們將建立更多的線程式,不然我們殺掉一寫來避免額外的...
乙個剖析AJAX原理的簡單範例 轉
宣告 本 是引用自奚江華的著作,但我沒有在網路找到相關位址,所以沒有新增相關引用。這個例子是我手動敲打進來的,一是為了自己練習一下,二來也方便大家學習和指教。為了讓各為能夠了解什麼是ajax,以下是乙個ajax的手工範例 即不引用任何的library或ajax framework 此範例頗為精要易懂...