首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >基于JPA的分页排序

基于JPA的分页排序

作者头像
Diuut
发布2022-11-22 20:09:56
发布2022-11-22 20:09:56
1.1K0
举报
文章被收录于专栏:DiuutDiuut

需求:排行榜功能需要全表中条件查询并排序,取出前20放入redis中的zset作为初始排行榜

方法一: 原生Sql

在接口中带上@query注解,在注解参数中附上sql语句并预留占位符即可。

代码语言:javascript
复制
public interface TaskDao extends JpaRepository<Task, Long> {
  @Query("select * from tb_task t where t.task_name = ?1 order by ?2", nativeQuery = true)
  Task findByTaskName(String taskName,int chip);
}

不建议直接使用@query,因为大多数简单功能查询jpa本身已经自带,除非特别复杂或者需要特别优化的sql查询才有必要使用该方法

方法二: 通过Pageable、Sort类

在jpa的findAll方法中提供了对于Pageable类与Sort类的支持,单独的分页与单独的排序可以直接使用findAll方法利用这两个类作为条件进行查询,如果既需要排序又需要分页,可以在Pageable中插入Sort类来使用。

代码语言:javascript
复制
    @Test
    public void test() {
        Sort sort=Sort.by(Sort.Direction.DESC,"gold");//排序规则,条件字段为list,可以多个
        Pageable pageable=PageRequest.of(0,20,sort);//分页范围,排序
        Page<User> userPage = userDao.findAll(pageable);
        log.info("userPage:{}", userPage.getContent());
    }

Post Views: 94

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年7月16日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 方法一: 原生Sql
  • 方法二: 通过Pageable、Sort类
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档