JPA的使用总结

本文总结了Spring Data JPA在查询方面的应用,包括分页查询(Pageable接口,PageRequest使用)、限制查询(findFirstByOrderByIdDesc等方法)、多表查询(@OneToMany映射关系)。通过实例展示了如何进行分页、自定义查询以及多表联合查询,并探讨了JPA在复杂查询中的优缺点。
摘要由CSDN通过智能技术生成
上一篇博客已经介绍了JPA的基本使用,这里我们就来学习一下如何在JPA中使用复杂的查询方法。

1.查询

在实际的开发中我们需要用到分页、删选、多表查询等查询的时候就需要特殊的方法或者自定义SQL

1.1分页查询

分页查询在实际使用中非常普遍了,spring data jpa已经帮我们实现了分页的功能,在查询的方法中,需要传入参数Pageable。从源码中我们不能发现,JpaRepository继承了PagingAndSortingRepository接口,该接口中提供了一个分页方法:,该方法只接收一个Pageable参数。

    Page<T> findAll(Pageable var1);

我们先来看一下这个方法怎么使用吧。
细心的人会发现Pageable只是一个接口类,那么我们如何来使用呢?
翻看源码我们会发现有PageRequest、QPageRequest这两个类,它们的父类都实现了pageable接口。区别在于排序的不同,QPageRequest使用了Qsort方法,使用快排进行排序。
同样的我们通过postman来测试,先来看一下接口代码。

    @GET
    @Produces(TYPE_JSON)
    @Path("pageSearch")
    public Object pageSearch(@QueryParam("pageNum") int pageNum, @QueryParam("size") int size, @QueryParam("order") String order) {
        Sort sort = new Sort(Sort.Direction.fromString(order), "id");
        Pageable pageable = new PageRequest(pageNum, size, sort);
        return personRepository.findAll(pageable);
    }

接着我们来看一下调用结果:
这里写图片描述
先说明一下,数据库中一共有10条数据,id从1到10,从图上我们可以看到分页查询返回了详细的信息,有人会奇怪从第一页开始为什么显示的是5,6,7。这是因为在JPA的分页查询中页码下标是从0开始的,大家可以尝试一下把pageNum改为0试试。

2.限制查询

在做top排行榜的时候,我们该怎么编写方法呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值