zoukankan      html  css  js  c++  java
  • 分页工具一Pageable与Page

    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Page;

    1.Pageable概述

    Page<User> findByAge(int age, Pageable pageable);

    Pageable 是Spring Data库中定义的一个接口,用于构造翻页查询,是所有分页相关信息的一个抽象,通过该接口,我们可以得到和分页相关所有信息(例如pageNumber、pageSize等),这样,Jpa就能够通过pageable参数来得到一个带分页信息的Sql语句。

    2.Pageable实现:PageRequest

    静态方法获取对象

    static PageRequest of(int page, int size)static PageRequest of(int page, int size, Sort sort)

    3.直接获取Pageable对象

    我们只需要在方法的参数中直接定义一个pageable类型的参数,当Spring发现这个参数时,Spring会自动的根据request的参数来组装该pageable对象

    Spring支持的request参数如下:

    • page,第几页,从0开始,默认为第0页
    • size,每一页的大小,默认为20
    • sort,排序相关的信息,例如sort=firstname&sort=lastname,desc表示在按firstname正序排列基础上按lastname倒序排列
    @RequestMapping("list")
    public Page<T> getEntryByPageable(@PageableDefault(value = 15, sort = { "id" }, direction = Sort.Direction.DESC) 
                                        Pageable pageable) {
        return dao.findAll(pageable);
    }
    

    四.Pageable接口

    public interface Pageable {
        
        //返回要返回的页面.
        int getPageNumber();
    
        // 返回要返回的项目的数量。
        int getPageSize();
        
        //根据底层页面和页面大小返回偏移量。
        int getOffset();
    
        //返回排序参数。
        Sort getSort();
    }
    

    五.Page接口

    Page<User> findByAge(int age, Pageable pageable);

    用于储存查询的结果集

    public interface Page<T> extends Iterable<T> {
     
        int getNumber();			//当前第几页,总是非负的
     
        int getSize();			//@常用:返回当前页面的大小。
     
        int getTotalPages();         //@常用:返回分页总数。
     
        int getNumberOfElements();   //返回当前页上的元素数。
     
        long getTotalElements();    //@常用:返回元素总数。
     
        boolean hasPreviousPage();  //返回如果有上一页。
     
        boolean isFirstPage();      //返回当前页是否为第一页。
     
        boolean hasNextPage();      //返回如果有下一页。
     
        boolean isLastPage();       //返回当前页是否为最后一页。
     
        Iterator<T> iterator();
     
        List<T> getContent();     //@常用:将所有数据返回为List
     
        boolean hasContent();     //返回数据是否有内容。
     
        Sort getSort();          //返回页的排序参数。
    }
    

    六.Page接口实现PageImpl

    构造函数PageImpl(List<T> content)PageImpl(List<T> content, Pageable pageable, long total)
    成员方法

    List<T>	getContent()
    Pageable	 getPageable()
    long	getTotalElements()
    int	getTotalPages()
    Sort	getSort()
    int	getSize()
    

    七.使用

        @GetMapping("/showMarkerByPage/{page}")
    	public Result showMarkerController(@PathVariable("page") int page){
    		PageRequest pageRequest = PageRequest.of(page, 5);
    		Page<Marker> markerPage = markerService.findMarker(pageRequest);
    		for (int i = 0; i < markerPage.getContent().size(); i++) {
    			System.out.println(markerPage.getContent().get(i));
    			System.out.println(markerPage.getTotalElements());
    		}
    		if (markerPage.getContent()!=null) {
    			return ResultUtil.success(markerPage.getContent(), "/showMarker");
    		}else {
    			return ResultUtil.error(1, "查询失败", "/showMarker");
    		}
    	}
    
  • 相关阅读:
    浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
    浙大数据结构课后习题 练习二 7-2 一元多项式的乘法与加法运算 (20 分)
    浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
    浙大数据结构课后习题 练习一 7-1 最大子列和问题 (20 分)
    PAT Basic 1019 数字黑洞 (20 分)
    PAT Basic 1017 A除以B (20 分)
    PAT Basic 1013 数素数 (20 分)
    PAT Basic 1007 素数对猜想 (20 分)
    PAT Basic 1003 我要通过! (20 分)
    自动化运维——HelloWorld(一)
  • 原文地址:https://www.cnblogs.com/loveer/p/11303608.html
Copyright © 2011-2022 走看看