SpringData JPA-PagingAndSortingRepository 接口 分页和排序

使用PagingAndSortingRepository接口实现分页查询

PagingAndSortingRepository接口实现内有两个方法

@NoRepositoryBean
public interface PagingAndSortingRepository extends CrudRepository {
    Iterable findAll(Sort var1);//排序

    Page findAll(Pageable var1);//分页
}

分页查询需要的对象

Pageable对象用于设置分页条件
注意SpringData JPA内的分页查询分页的页数起始是从0开始的
测试

@Test
public void test1() {
    int page = 0;//分页的其实位置,注意起始的位置是从0开始的
    int size = 3;//显示的页数
    Pageable pageable = new QPageRequest(page, size);
    Page page1 = this.userDaoThree.findAll(pageable);

    System.out.println("总条数"+page1.getTotalElements());
    System.out.println("总条数"+page1.getTotalPages());
    System.out.println("显示的条数"+page1.getNumberOfElements());//显示的条数
    System.out.println("起始位置"+page1.getNumber());//起始位置
    //获取结果集
    List content = page1.getContent();
    for (Users u :
            content) {
        System.out.println(u);
    }
}

查询的结果

SpringData JPA-PagingAndSortingRepository 接口 分页和排序_第1张图片

PagingAndSortingRepository接口实现排序查询

package com.sxt.test;

import com.sxt.dao.UserDaoThree;
import com.sxt.pojo.Users;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.querydsl.QPageRequest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

/**
 * @project_name:hibernate02
 * @date:2019/8/20:16:02
 * @author:shinelon
 * @Describe:测试分页
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:ApplicationContext-hib.xml")
public class PagingAndSortingRepositoryTest {

    @Autowired
    private UserDaoThree userDaoThree;


    /**
     * 接收多排序的条件查询
     * 使用对象Sort内部类Order 实现多排序
     */
    @Test
    public void test3(){

        Sort.Order order = new Sort.Order(Sort.Direction.DESC,"username");
        Sort.Order order1 = new Sort.Order(Sort.Direction.DESC,"userid");
        Sort orders = new Sort(order,order1);//重载的构造接收多个order
        List list  = (List)this.userDaoThree.findAll(orders);//
        for (Users u :
                list) {
            System.out.println(u);
        }
    }



    /**
     * 排序规则  1.第一个参数按照指定的排序规则根据Sort内部提供的内部类即可选择排序的规则
     *                  2.第二个参数表示排序的字段,注意字段要写实体对象内的字段名称而不是数据库表中的字段
     *
     */
    @Test
    public void test2(){
        Sort orders = new Sort(Sort.Direction.ASC,"userid");
        List list =(List) this.userDaoThree.findAll(orders);
        for (Users u :
                list) {
            System.out.println(u);
        }
    }


    @Test
        public void test1() {
        int page = 0;//分页的其实位置,注意起始的位置是从0开始的
        int size = 3;//显示的页数
        Pageable pageable = new QPageRequest(page, size);
        Page page1 = this.userDaoThree.findAll(pageable);

        System.out.println("总条数"+page1.getTotalElements());
        System.out.println("总条数"+page1.getTotalPages());
        System.out.println("显示的条数"+page1.getNumberOfElements());//显示的条数
        System.out.println("起始位置"+page1.getNumber());//起始位置
        //获取结果集
        List content = page1.getContent();
        for (Users u :
                content) {
            System.out.println(u);
        }
    }
}

结果
单条件排序
SpringData JPA-PagingAndSortingRepository 接口 分页和排序_第2张图片

多条件排序
SpringData JPA-PagingAndSortingRepository 接口 分页和排序_第3张图片

你可能感兴趣的:(SpringData)