【问题标题】:How to fetch/optimize huge volume for PAGINATION of data through Hibernet Java Struts如何通过 Hibernate Java Struts 获取/优化大量数据的 PAGINATION
【发布时间】:2014-01-28 13:24:59
【问题描述】:

当前问题:我们目前正试图从数据库中获取超过 500k(五十万)条记录,然后我必须在 JSP 上每页显示 50 条记录(使用 struts 2)。问题是加载需要很长时间,甚至需要一些时间。一旦加载,我们就可以顺利导航。

需要的解决方案:喜欢根据分页定义的记录加载有限的记录,例如:每页最多 100 条记录。是否有人在 struts 或类似框架中实现了类似的功能?我也不想一次获得所有记录。请指导我如何实施?

【问题讨论】:

标签: java jsp struts2 pagination


【解决方案1】:

根据某个参数,每次请求只能获取 100 条记录。一次性获取所有记录需要很长时间。我已经使用查询和一些参数实现了分页。

【讨论】:

    【解决方案2】:

    您可以使用 jquery 数据表。它具有用于 ajax 加载的分页功能。因此,当您单击下一页时,它会从数据库中加载下一条记录。为此,您需要添加 Jquery 库,例如 jquery.dataTables.min.js,jquery-ui-1.8.10.custom.min.jsjquery-1.4.4.min.jsjquery-1.4.2.min.jsjquery-ui-1.8.10.custom.css

    JSP 代码

    <table id="reqAllQueriesTable" cellpadding="0" cellspacing="0" border="0" class="display" style="width: 100%;">
        <thead>
        <tr>
        <th style="display: none"></th>
        <th>&nbsp;</th>
        <th><spring:message code='Name'/></th>
        <th><spring:message code='runDate'/></th>
        th><spring:message code='noOfRec'/></th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
    

    JavaScript

    var oTable = $('#reqAllQueriesTable')
                    .dataTable(
                            {
                                "bProcessing": true,
                                "bServerSide": true,
                                "sAjaxSource": "query/getQuery",
                                "bPaginate" : true,
                                "bScrollCollapse" : true,
                                "iDisplayLength" : 10,
                                "bFilter" : true,
                                "bJQueryUI" : true,
                                "sPaginationType" : "full_numbers",
                                "oLanguage" : {
                                    "sLengthMenu" : "Display _MENU_ records per page",
                                    "sZeroRecords" : "No  Queries found",
                                    "sInfo" : "Showing _START_ to _END_ of _TOTAL_ records",
                                    "sInfoEmpty" : "Showing 0 to 0 of 0 records",
                                    "sInfoFiltered" : "(filtered from _MAX_ total records)"
                                },
                                "aaSorting" : [ [ 3, "desc" ] ],
                                "aoColumns" : [/*Id*/{
                                    "bSearchable" : false,
                                    "bVisible" : false
                                },
                                /*Id RadioButton*/{
                                    "bSearchable" : false,
                                    "bSortable" : false
                                },
                                /*Name*/null,
                                /*Run Date*/{
                                    "sType" : "date"
                                },                          
                                {
                                    "fnRender" : function(oObj) {
    
                                    return '<input type="radio"  name="Id" value= "' + oObj.aData[0] + " "/>';
                                    },
                                    "aTargets" : [ 1 ]
                                }]
                            });
    

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多