Spring JPA实现优雅查询并分页,排序

该代码示例展示了如何在Java中使用SpringDataJPA进行分页查询和按特定字段排序。通过PageRequest设置页码、大小和排序方向,然后利用ExampleMatcher创建查询条件,实现对OcrFilePO对象的精确匹配查询,同时忽略某些字段参与查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Override
    public Page<OcrFilePO> findOcrList(int pageNo, int pageSize, Long userId) {

        //Sort.Direction是个枚举有ASC(升序)和DESC(降序)
        Sort.Direction sort = Sort.Direction.DESC;
        //PageRequest继承于AbstractPageRequest并且实现了Pageable
        //获取PageRequest对象 index:页码 从0开始  size每页容量 sort排序方式 "id"->properties 以谁为准排序
        Pageable pageable = PageRequest.of(pageNo - 1, pageSize, sort, "top", "createdAt");
        //要匹配的实例对象
        OcrFilePO ocrFilePO = new OcrFilePO();
        ocrFilePO.setUserId(userId);
        ocrFilePO.setCreatedAt(null);
        ocrFilePO.setUpdatedAt(null);
        ocrFilePO.setNoTraceMode(0);
        //它是通过对象的属性来进行匹配的,
        //所以此时如果对象中含有其他有值的属性,那么就会变成查询条件进行查询,
        //如果你不想让他们变成你的查询条件,那么你就需要将值赋空,或者调用 .withIgnorePaths("createdAt")来进行忽略此条件!
        //定义匹配规则 匹配"vendorId"这个属性 exact 精准匹配
        ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("userId", ExampleMatcher.GenericPropertyMatchers.exact());
//                .withIgnorePaths("createdAt").withIgnorePaths("updatedAt");
        Example<OcrFilePO> example = Example.of(ocrFilePO, exampleMatcher);
//        Page<OcrFilePO> page = dao.findAll(example, pageable);
//        //获取总页数
//        page.getTotalPages();
//        //获取总元素个数
//        page.getTotalElements();
//        //获取该分页的列表
//        page.getContent();

        return dao.findAll(example, pageable);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值