頁面引入layui.css、 layui.js
1 <div id="pTable" style="width: 1200px;"> 2 <table class="layui-table" id="layui_table_id" lay-filter="test"> 3 </table> 4 <div id="laypage"></div> 5 </div>
前台js
1 var limitcount = 10; 2 var curnum = 1; 3 //列表查詢方法 4 function productsearch(productGroupId,start,limitsize) { 5 layui.use(['table','laypage','laydate'], function(){ 6 var table = layui.table, 7 laydate=layui.laydate, 8 laypage = layui.laypage; 9 table.render({ 10 elem: '#layui_table_id' 11 , url: '<%=path%>/xx/pListQuery.html?pId='+productGroupId+'¤tPage='+ start+'¤tNumber=' + limitsize 12 /*, where:{pagename:start,pagelimit:limitsize} //傳參*/ 13 , cols: [[ 14 {field: 'productId', title: 'ID', width: '170', sort: true} 15 , {field: 'productName', title: '名稱', width: '450'} 16 , {field: 'productState', title: '狀態', width: '100'} 17 , {field: 'effectTime', title: '生效時間', width: '120', sort: true} 18 , {field: 'invalidTime', title: '失效時間', width: '120', sort: true} 19 , {field: 'productCost', title: '成本', width: '100', sort: true} 20 , {field: 'poperation', title: '操作', width: '100',fixed: 'right', toolbar: '#barDemo'} 21 ]] 22 , page: false 23 , height: 430 24 ,done: function(res, curr, count){ 25 //如果是異步請求數據方式,res即為你接口返回的信息。 26 //如果是直接賦值的方式,res即為:{data: [], count: 99} data為當前頁數據、count為數據總長度 27 laypage.render({ 28 elem:'laypage' 29 ,count:count 30 ,curr:curnum 31 ,limit:limitcount 32 ,layout: ['prev', 'page', 'next', 'skip','count','limit'] 33 ,jump:function (obj,first) { 34 if(!first){ 35 curnum = obj.curr; 36 limitcount = obj.limit; 37 //console.log("curnum"+curnum); 38 //console.log("limitcount"+limitcount); 39 //layer.msg(curnum+"-"+limitcount); 40 productsearch(productGroupId,curnum,limitcount); 41 } 42 } 43 }) 44 } 45 }) 46 47 //監聽工具條 48 table.on('tool(test)', function(obj){ //注:tool是工具條事件名,test是table原始容器的屬性 lay-filter="對應的值" 49 var data = obj.data //獲得當前行數據 50 ,layEvent = obj.event; //獲得 lay-event 對應的值 51 if(layEvent === 'detail'){ 52 viewLableInfo(data.attrId); 53 layer.msg(data.attrId); 54 } else if(layEvent === 'del'){ 55 layer.msg('刪除'); 56 } else if(layEvent === 'edit'){ 57 layer.msg('編輯操作'); 58 } 59 }); 60 //常規用法 61 laydate.render({ 62 elem: '#createDate' 63 }); 64 //常規用法 65 laydate.render({ 66 elem: '#processingTime' 67 }); 68 69 }); 70 } 71 var pId = '${pGBean.pgId }'; 72 productsearch(pId, curnum, limitcount);
業務邏輯層
1 @Override 2 public String queryList (HttpServletRequest request) { 3 String total = ""; 4 String pId = request.getParameter("pId"); 5 int currentNumber = Integer.parseInt(request.getParameter("currentNumber")); 6 String currentPage = request.getParameter("currentPage") == null ? "1" : request.getParameter("currentPage"); 7 //分頁處理,顯示第一頁的30條數據(默認值) 8 PageHelper.startPage(Integer.parseInt(currentPage), currentNumber); 9 List<PExl> list = exportDao.queryList (pId); 10 if(list.size() > 0){ 11 total = list.get(0).getTotal(); 12 } 13 14 Page page = PageHelper.localPage.get(); 15 if(page!=null){ 16 page.setCurrentPage(Integer.parseInt(currentPage)); 17 } 18 PageHelper.endPage(); 19 20 JSONObject jsonObject = new JSONObject(); 21 jsonObject.put("code", 0); 22 jsonObject.put("msg", ""); 23 jsonObject.put("count", total); 24 jsonObject.put("data", list); 25 //System.out.println("json:----" + jsonObject.toString()); 26 return jsonObject.toString(); 27 }
sql
其中sql在計算總數totle時可以這么寫
COUNT(*) OVER(PARTITION BY 1) AS TOTAL