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");
    		}
    	}
    
  • 相关阅读:
    matlab的特殊字符(上下标和希腊字母等)
    漫谈高数 特征向量物理意义
    小波变换
    泰勒级数
    关于均方差的一点知识
    论文笔记(4)-Deep Boltzmann Machines
    论文笔记(3)-Extracting and Composing Robust Features with Denoising Autoencoders
    论文笔记(2)-Dropout-Regularization of Neural Networks using DropConnect
    猪血豆腐
    离散时间系统结构
  • 原文地址:https://www.cnblogs.com/loveer/p/11303608.html
Copyright © 2011-2022 走看看