我正在使用 Spring MVC,我需要獲得的不僅僅是400k datas我在 mysql 查詢中使用 JOIN 的表。我實際上擁有的是一個控制器,它返回包含一個列表。我使用 AJAX 調用控制器。我的解決方案的問題是我無法在幾秒鐘內獲取 List 的數據,在 JSP 頁面上加載需要超過 5 分鐘。在頁面 Jquery..$(document).ready(function ajaxPost() { $.ajax({ type: "GET", data: page, url: "allListAjax", success: function(list) { //here i get responce list and page which takes 5 minutes }//success }//ajax}//ready在控制器中..@RequestMapping(value="/allListAjax")public @ResponseBody IVRRouteReportWrapper dashoardAjax(Model model, @RequestParam(required = false) Integer page) { IVRRouteReportWrapper wrappObj= new IVRRouteReportWrapper(); List<IVRRouteReport> list = ivrRouteServiceInterface.getAllIVRRouteReport(page);wrappObj.setIVRouteReportList(list); wrappObj.setPage(page);return wrappObj;}這里,IVRRouteReportWrapper是一個域模型,其中包含 List 和 page 的 setter 和 getter。在服務實施中... public List<IVRRouteReport> getAllIVRRouteReport(Integer page) { return ivrRouteDAOInterface.getAllIVRRouteReport(page); }在道實現中...public List<IVRRouteReport> getAllIVRRouteReport(Integer page) {if(page==null) { page = 0;}else { page = page*200;}String strqry= "SELECT c.caller_id_number as caller_id_number, c.destination_number as destination_number," +" c.created_time as created_time, vbDtmf.digit as dtmf FROM VoiceBroadcastDTMF vbDtmf " +"LEFT JOIN cdr c ON vbDtmf.uuid=c.orig_id ORDER BY c.created_time DESC";Query query = getSession().createSQLQuery(strqry) .addScalar("caller_id_number", new StringType()) .addScalar("destination_number", new StringType()) .addScalar("created_time", new StringType()) .addScalar("dtmf", new StringType()) .setResultTransformer(Transformers.aliasToBean(IVRRouteReport.class)) .setFirstResult(page) .setMaxResults(200); List<IVRRouteReport> ivrRouteReportList =(List<IVRRouteReport>) query.getResultList(); getSession().flush(); return ivrRouteReportList; }有沒有辦法在 jsp 頁面上快速返回這個列表?提前致謝。
2 回答

蝴蝶不菲
TA貢獻1810條經驗 獲得超4個贊
索引“created_time”列,并通過僅指定查詢中的必填字段來省略不需要的字段,如下所示
String strqry= "SELECT c.caller_id_number as caller_id_number, c.destination_number as destination_number," +" c.created_time as created_time, vbDtmf.digit as dtmf FROM VoiceBroadcastDTMF vbDtmf " +"LEFT JOIN (SELECT caller_id_number , destination_number , created_time FROM cdr) as c ON vbDtmf.uuid=c.orig_id ORDER BY c.created_time DESC";
添加回答
舉報
0/150
提交
取消