资讯专栏INFORMATION COLUMN

使用SpringData+JPA的@Query注解完成动态条件分页查询

melody_lql / 2006人阅读

摘要:正文公司使用的是现在流行的,数据库方面使用的是。这几天用的最多的就是用进行查询了,简单的查询很简单,网上查一查就有一堆方案,直到遇到分页查询的时候出了问题。

写作原因 之前在学校都是做前端,但是最后找了个Java后端的工作,框架什么的基本没用过,所以工作中遇到了很多问题,所以决定记录下来工作中遇到的问题,记录成长的点滴。 正文

公司使用的是现在流行的SpringBoot,数据库方面使用的是SpringData+JPA+Hibernate。这几天用的最多的就是用JPA进行查询了,简单的查询很简单,网上查一查就有一堆方案,直到遇到分页查询的时候出了问题。
网上查到的大多都是使用EntityManager通过人工拼接sql来查询的,但是今天从导师那里学到了一手,在Repository中使用@Query注解即可。
代码如下

public interface StudentRepository extends JpaRepository {

  @Query(
      value = "SELECT * FROM student"
          + " WHERE (age = ?1 OR ?1 IS NULL)"
          + " WHERE (id = ?2 OR ?2 IS NULL)"
          + " WHERE (first_name = ?3 OR ?3 IS NULL)"
          + " ORDER BY ?#{#pageable}", 
      countQuery = "SELECT COUNT(1) FROM "
          + "SELECT * FROM student"
          + " WHERE (age = ?1 OR ?1 IS NULL)"
          + " WHERE (id = ?2 OR ?2 IS NULL)"
          + " WHERE (first_name = ?3 OR ?3 IS NULL)"
          + " ORDER BY ?#{#pageable}",
      nativeQuery = true
  )
  Page findByAgeAndIdAndFirstName(Integer age, Integer id, String firstName, Pageable pageable);
}

最后的Pageable可以使用PageRequest来创建。

这里其实主要还是使用了SQL的语法,SQL还是有很多需要去学的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75427.html

相关文章

  • 慕课网_《轻松愉快之玩转SpringData》学习总结

    摘要:时间年月日星期一说明本文部分内容均来自慕课网。慕课网教学示例源码个人学习源码第一章课程介绍课程介绍什么是主旨提供一个熟悉的一致的,基于框架的数据访问框架。 时间:2017年04月24日星期一说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://gith...

    skinner 评论0 收藏0
  • Spring Data JPA 教程系列

    摘要:测试程序首先看到顶层服务使用格式进行输出。的列举包括以下值默认,公开所有公开和注解的,除非设置为暴露所有修饰的创建配置类测试分页和排序分页是一个由定义的接口,它拥有一个实现。排序提供一个对象提供排序机制。 使用 JPA 访问数据 创建项目 打开IDEA -> Create New Project showImg(https://segmentfault.com/img/bVbo9bO?...

    JayChen 评论0 收藏0
  • 【从零入门系列-3】Spring Boot 之 数据库操作

    摘要:编写测试用例代码打开框架自动生成的测试代码文件编写测试用例,测试增删改查效果,测试代码如下注释,它可以对类成员变量方法及构造函数进行标注,完成自动装配的工作。 文章系列 【从零入门系列-0】Sprint Boot 之 Hello World 【从零入门系列-1】Sprint Boot 之 程序结构设计说明 【从零入门系列-2】Sprint Boot 之 数据库实体类 前言 前一章...

    Leo_chen 评论0 收藏0
  • 谈谈Spring-Data那些事儿

    摘要:什么是呢全称,是提出的一个对象持久化规范,各应用服务器自主选择具体实现。仅仅只是一个规范,而不是产品使用本身是不能做到持久化的。只要提供了持久化类与表的映射关系,框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。 我们在进行事务处理往往需要和数据库进行交互,这其中有关系型数据库(MySql,Sql Server,Oracle)或者是非关系型数据库(Redis,Hadhoop)...

    chinafgj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<