Day 30 Springboot基础8 JpaRepository简单分页

Repository

继承 jparepository 接口

package com.ll.zhomework.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import com.ll.zhomework.entity.Homeworkmaster2;

public interface Homeworkmaster2_Repository extends JpaRepository<Homeworkmaster2,String>{
    
    

}

Service

//分页
	public Page<Homeworkmaster2> findAll(String page,String limit){
    
    
		Pageable pageable=PageRequest.of(Integer.parseInt(page), Integer.parseInt(limit));
		Page<Homeworkmaster2> pageinfo=homeworkmaster2_Repository.findAll(pageable);
		return pageinfo;
	}

JpaRepository提供了两个和分页和排序有关的查询

  • List findAll(Sort sort) 返回所有实体,按照指定顺序排序返回 -------( Sort对象用来指示排序

  • List findAll(Pageable pageable) 返回实体列表,实体的offest和limit通过pageable来指定------( Pageable接口用于构造翻页查询

    • Pageable定义了很多方法,但其核心的信息只有两个:
      • 一是分页的信息(page、size)
      • 二是排序的信息。Spring Data Jpa提供了PageRequest的具体实现
    • PageRequest是其实现类,可以通过提供的工厂方法创建PageRequest:
      -------public static PageRequest of(int page, int size)
      -------public static PageRequest of(int page, int size, Sort sort) ( PageRequest中加入排序
      • 方法中的参数,page总是从0开始,表示查询页,size指每页的期望行数
  • Page接口 可以获得当前页面的记录、总页数、总记录数、是否有上一页或下一页等。Spring Data翻页查询总是返回Page对象,Page对象提供了以下常用的方法:

    • int getTotalPages() 总的页数
    • long getTotalElements() 返回总数
    • List getContent() 返回此次查询的结果集

参考链接:使用Spring JPA中Page、Pageable接口和Sort类完成分页排序https://blog.csdn.net/qq_40715775/article/details/83153808

参考链接:JPA中的Page与Pageable https://blog.csdn.net/u011781521/article/details/74539330

Controller

//分页
	@RequestMapping("page")
	public Page<Homeworkmaster2> pagetest(HttpServletRequest request){
    
    
		String startpage=request.getParameter("start");
		System.out.println("startpage==="+startpage);
		return homeworkmaster2_Service.findAll(startpage, "5");  //第0页  一页5行
	}

js

$(document).ready(function(){
    
    
	var currentpage=0;
	getData();
	 
	 //显示全部
	 function getData(){
    
    
	 $.getJSON("/b/homeworkmaster2_/page",{
    
    start:currentpage},function(json){
    
    
		 console.log(json);
		 console.log("*******1***"+currentpage);
		 var contentdata=json.content;
		 $("#tbodyprobtn").empty();
		for(var i=0;i<contentdata.length;i++){
    
    
			$("#tbodyprobtn").append(
					 "<tr>"
					 +"<td>"+contentdata[i].id 
					 +"</td>"
					 +"<td>"+contentdata[i].title 
					 +"</td>"
					 +"<td>"+contentdata[i].open_date
					 +"</td>"
					 +"<td>"+contentdata[i].type
					 +"</td>"
					 +"<td>"
					 +"<button type='button' class='btn btn-outline-info btn-sm' data-toggle='modal' data-target='#myModal1'id='btn1"+contentdata[i].id+"' name='btn001' >提交情况</button>"
					 +"</td>"
					 +"<td>"
					 +"<button type='button' class='btn btn-outline-danger btn-sm' data-toggle='modal' data-target='#myModal2' id='btn3"+contentdata[i].id+"' name='btn003' >作业内容</button>"
					 +"</td></tr>"
			)
			
		}
			
			 
			 //设置动态分页
			 var totalPagesnumber=json.totalPages;
			 $(".pagination").empty();
			 $(".pagination").append('<li class=""><a class="page-link" href="#" id="firstpage">首页</a></li>');
			 $(".pagination").append('<li class=""><a class="page-link" href="#" id="updata">上一页</a></li>');
			 for(var j=0;j<totalPagesnumber;j++){
    
    
				 $(".pagination").append('<li class="page-item" id="pageno'+j+'"><a class="page-link" href="#">'+(j+1)+'</a></li>');
			 }
			
			 $(".pagination").append('<li class=""><a class="page-link" href="#" id="nextdate">下一页</a></li>');
			 
			//点击找到当前页面
				$(".page-item").click(function(){
    
    
					var idno=this.id;
					currentpage=idno.substr(6);
					getData();
				});
				$(".page-item").removeClass("active");
				$("#pageno"+currentpage).addClass("active");
			//点击上一页
				$("#updata").click(function(event){
    
    
					
					if(json.first==true){
    
    
						event.preventDefault();
					}else{
    
    
						var intnum=new Number(currentpage)
						currentpage=intnum-1;
						getData();
					}
				});
			//点击下一页
				$("#nextdate").click(function(event){
    
    
					
					if(json.last==true){
    
    
						event.preventDefault();
					}else{
    
    
						var intnum=new Number(currentpage)
						currentpage=intnum+1;
						getData();
					}
				});
			//点击首页
				$("#firstpage").click(function(){
    
    
					currentpage=0;
					getData();
				});
		
	 	});
	 }
	 //
	

{
    
    "content":[

{
    
    "id":"1565316616556151514",
,"username":"123",
,"password":"123",
,"type":"学生",
,"imgname":"timg (2).jpg"},

{
    
    "id":"1565320759385517327",
,"username":"789",
,"password":"789",
,"type":"学生",
,"imgname":"timg (2).jpg"},

{
    
    "id":"1565320851229506472",
,"username":"777",
,"password":"778",
,"type":"老师",
,"imgname":"timg (2).jpg"},

{
    
    "id":"1565490920634432800",
,"username":"芳芳老师",
,"password":"7788",
,"type":"老师",
,"imgname":"timg (2).jpg"},

{
    
    "id":"1565777740264243683",
,"username":"456",
,"password":"456",
,"type":"学生",
,"imgname":"timg (2).jpg"}],//content  一个数组---数据库里面的记录
,"pageable":{
    
    "sort":{
    
    "unsorted":true,//sort 是否排序
,"sorted":false,
,"empty":true},
,"offset":0,
,"pageSize":5,//一行显示5条记录
,"pageNumber":0,
,"unpaged":false,
,"paged":true},
,"totalPages":1,//一共只有一页
,"totalElements":5,//一共有五条记录
,"last":true,
,"number":0,
,"size":5,
,"sort":{
    
    "unsorted":true,
,"sorted":false,
,"empty":true},
,"numberOfElements":5,
,"first":true,
,"empty":false}

返回结果参考文章:https://www.tianmaying.com/tutorial/spring-jpa-page-sort

猜你喜欢

转载自blog.csdn.net/fggsgnhz/article/details/99693546