当前位置: 移动技术网 > IT编程>开发语言>Java > SpringData JPA实现查询分页demo

SpringData JPA实现查询分页demo

2019年07月22日  | 移动技术网IT编程  | 我要评论

springdata jpa 的 pagingandsortingrepository接口已经提供了对分页的支持,查询的时候我们只需要传入一个 org.springframework.data.domain.pageable

接口的实现类,指定pagenumber和pagesize即可

springdata包中的 pagerequest类已经实现了pageable接口,我们可以直接使用下边是部分代码:

dao:

package com.jiaoyiping.jdjy.sourcecode.dao;

import com.jiaoyiping.jdjy.sourcecode.bean.sourcecode;
import org.springframework.data.repository.pagingandsortingrepository;

/**
 * created with intellij idea.
 * user: 焦一平
 * date: 14-11-20
 * time: 下午11:18
 * to change this template use file | settings | file templates.
 */
public interface sourcecodedao extends pagingandsortingrepository<sourcecode, string> {

}

service:

package com.jiaoyiping.jdjy.sourcecode.service;

import com.jiaoyiping.jdjy.sourcecode.bean.sourcecode;
import com.jiaoyiping.jdjy.sourcecode.dao.sourcecodedao;
import org.apache.solr.client.solrj.solrserverexception;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.data.domain.page;
import org.springframework.data.domain.pagerequest;

import javax.transaction.transactional;
import java.io.ioexception;
import java.sql.timestamp;
import java.util.list;

/**
 * created with intellij idea.
 * user: 焦一平
 * date: 14-11-20
 * time: 下午11:24
 * to change this template use file | settings | file templates.
 */
public class sourcecodeservice {
  @autowired
  private sourcecodedao sourcecodedao;public page<sourcecode> getsourcecode(int pagenumber,int pagesize){
    pagerequest request = this.buildpagerequest(pagenumber,pagesize);
    page<sourcecode> sourcecodes= this.sourcecodedao.findall(request);
    return sourcecodes;
  }
  //构建pagerequest
  private pagerequest buildpagerequest(int pagenumber, int pagzsize) {
    return new pagerequest(pagenumber - 1, pagzsize, null);
  }

}

controller:

package com.jiaoyiping.jdjy.sourcecode.controller;
import com.jiaoyiping.jdjy.sourcecode.const;
import com.jiaoyiping.jdjy.sourcecode.bean.sourcecode;
import com.jiaoyiping.jdjy.sourcecode.service.sourcecodeservice;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.data.domain.page;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.servlet.modelandview;

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

/**
 * created with intellij idea.
 * user: 焦一平
 * date: 14-11-20
 * time: 下午11:22
 * to change this template use file | settings | file templates.
 */
@controller
@requestmapping(value = "/sourcecode")
public class sourcecodecontroller {
  @autowired
  private sourcecodeservice sourcecodeservice;

  
  @requestmapping(value = "list")
  public modelandview listsourcecode(httpservletrequest request, httpservletresponse response){
    string pagenumberstr=request.getparameter("pagenumber");
    if(pagenumberstr==null ||"".equals(pagenumberstr)){
      pagenumberstr="1";
    }
    int pagenumber = integer.parseint(pagenumberstr);
    int pagesize = const.page_size;
    modelandview modelandview = new modelandview();
    modelandview.setviewname("/sourcecode/listsourcecode");
    page<sourcecode> sourcecodes = this.sourcecodeservice.getsourcecode(pagenumber, pagesize);
    modelandview.addobject("sourcecodelist",sourcecodes.getcontent());
    modelandview.addobject("totalpagenumber",sourcecodes.gettotalelements());
    modelandview.addobject("pagesize",pagesize);
    return modelandview;

  }

}

 前端分页:

前端分页组件我们使用bootstrap提供的分页组件:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--
 created by intellij idea.
 user: 焦一平
 date: 2014/12/27
 time: 9:57
 to change this template use file | settings | file templates.
--%>
<%@ page contenttype="text/html;charset=utf-8" language="java" %>
<%
 string basepath = request.getcontextpath();
 string methodurl=basepath+"/sourcecode/list.action?pagenumber=";
%>
<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8"/>
 <title>源代码列表</title>

 <link href="<%=basepath%>/resources/assets/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet"/>
 <script type="text/javascript" src="<%=basepath%>/resources/js/jquery/jquery.js"></script>


 <script type="text/javascript">
  $(document).ready(function(){
   var totalnumber = number(${totalpagenumber});
   var pagesize = number(${pagesize});
   var pagecount = totalnumber/pagesize;
   var html = "";
   for(var i = 0;i<pagecount;i++){
    var link_url = "<li><a href=\"<%=methodurl%>"+(i+1)+"\">"+(i+1)+"</a></li>";
    html += link_url;
   }
   var fenyediv = document.getelementbyid("link");
   fenyediv.innerhtml=html;
  });
 </script>
</head>
<body>
<a href="#" rel="external nofollow" class="list-group-item active">
 源代码列表
</a>
  <c:foreach items="${sourcecodelist}" var="sourcecode">
   <a href="<%=request.getcontextpath()%>/sourcecode/detail.action?id=<c:out value=" rel="external nofollow" ${sourcecode.id}" />" class="list-group-item"><c:out value="${sourcecode.title}" /></a>
  </c:foreach>
<!-- 列表分页的div,由js动态填充内容-->
<ul class="pagination pagination-lg" id="link">

</ul><br>

</body>
</html> 

最终结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网