java spring data 分页_SpringData分页功能

在SpringData中实现分页功能我们需要将接口实现PagingAndSortingRepository这个接口提供了分页查询的方法

Page findAll(Pageable pageable); //分页查询(含排序功能)

@Test

public void Pagination() {

int pageIndex = 1;// 前台传过来的当前页

int pageSize = 5;// 每页需要的记录数

/**

* 不带排序写法: Pageable pageable = new PageRequest(pageIndex, pageSize);

*/

// 按照年龄字段排序

Order order = new Order(Direction.DESC, "age");

Sort sort = new Sort(order);

Pageable pageable = new PageRequest(pageIndex - 1, pageSize, sort);

Page page = studentService.findAll(pageable);

System.out.println("总记录数:" + page.getTotalElements());

System.out.println("当前第几页:" + (page.getNumber() + 1));

System.out.println("总页数:" + page.getTotalPages());

System.out.println("当前页的List:" + page.getContent());

System.out.println("当前页面的记录数:" + page.getNumberOfElements());

for (Student student : page.getContent()) {

System.out.println(student);

}

}

这样就可以简单的实现我们的分页了,但是瞬时间发现这个分页并不能带条件啊。

SpringData中给我们提供了一个接口,我们只需要将我们Dao层接口实现JpaSpecificationExecutor就可以达到带条件分页的效果

@Test

public void testJpaSpecificationExecutor(){

int pageIndex = 1;

int pagesize = 0;

PageRequest pagerequest = new PageRequest(pageIndex - 1, pagesize);

Specification specification = new Specification() {

@Override

public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) {

/**

* Root:表示查询的实体

* CriteriaQuery:可以从中得到root对象,即告知JPA criteria查询要查询哪一个实体类。还可以来添加查询条件。还可以结合EntityManager对象得到最终查询的TypedQuery对象。

* CriteriaBuilder:用于创建Criteria相关对象的工厂。

*/

//年龄属性

Path path = root.get("age");

Predicate predicate = cb.gt(path, 5);//大于5

return predicate;

}

};

Page page = studentDao.findAll(specification, pagerequest);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值