Spring Data JPA 提供的默认查询方法

 1.依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2.查询

(1)基础查询前缀: findBy、findFirstBy、findAllBy、findDistinctBy、findTop5By

// 返回的是满足条件的第一个匹配项,此时等价于findFirstBy

Optional<User> findByUsername(String username);

// 返回的是一个 List<User>,表示可能返回多条数据,此时等价于findAllBy

List<User> findByUsername(String username);

// 用于返回满足条件的第一个匹配项

Optional<User> findFirstByUsername(String username);

// 用于返回满足条件的所有匹配项

List<User> findAllByUsername(String username);

// 去重

List<User> findDistinctByLastName(String lastName);

// 查询结果的前5条数据(5可以换成其它数值

List<User> findTop5ByOrderByAgeDesc();

(2)使用关键字查询:And、Or、Between、LessThan、GreaterThan、Like、IsNull、IsNotNull、OrderBy

// 查询同时满足两个条件的数据

List<User> findByFirstNameAndLastName(String firstName, String lastName);

// 查询满足两个条件中至少一个的数据

List<User> findByFirstNameOrLastName(String firstName, String lastName);

// 查询在两个值之间的数据

List<User> findByAgeBetween(int minAge, int maxAge);

// 查询小于指定值的数据

List<User> findByAgeLessThan(int maxAge);

// 查询大于指定值的数据

List<User> findByAgeGreaterThan(int minAge);

// 模糊查询,用于匹配指定模式的数据

List<User> findByLastNameLike(String pattern);

// 查询指定属性为 null 的数据

List<User> findByLastNameIsNull();

// 查询指定属性不为 null 的数据

List<User> findByLastNameIsNotNull();

// 指定排序方式,用于按照指定属性进行升序或降序排序

List<User> findByLastNameOrderByFirstNameAsc(String lastName);

(3)集合查询:In、NotIn、Containing

// 查询某个属性值在给定集合中的数据

List<User> findByAgeIn(List<Integer> ages);

// 查询某个属性值不在给定集合中的数据

List<User> findByAgeNotIn(List<Integer> ages);

// 查询某个属性包含指定字符串的数据

List<User> findByAddressContaining(String keyword);

(4)排序查询:Asc、Desc

// 查询并按照指定属性进行升序排序

List<User> findByLastNameOrderByFirstNameAsc(String lastName);

// 查询并按照指定属性进行降序排序

List<User> findByLastNameOrderByAgeDesc(String lastName);

// 查询并按照多个属性进行排序

List<User> findByLastNameOrderByAgeAscFirstNameDesc(String lastName);

(5)分页查询 

Page<User> findByLastName(String lastName, Pageable pageable);

import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable;

Pageable pageable = PageRequest.of(0, 10); // 第一页,每页 10 条数据

Page<User> userPage = userRepository.findByLastName("Smith", pageable);

List<User> userList = userPage.getContent(); // 获取查询结果的数据

long totalElements = userPage.getTotalElements(); // 获取总记录数

int totalPages = userPage.getTotalPages(); // 获取总页数

(6)自定义查询: >(大于)、<(小于)、=(等于)、!=(不等于)、 LIKE(模糊匹配)、 IN(在某个范围内)、NOT IN(不在某个范围内)、IS NULL(为空)、IS NOT NULL(不为空)、BETWEEN AND(在某个范围内)、IS TRUEIS FALSE(布尔值判断)

// 使用 SQL 查询语句,nativeQuery = true 表示使用本地 SQL 查询

@Query(value = "SELECT * FROM book WHERE page_count > :minPageCount", nativeQuery = true)

List<Book> findBooksByMinPageCount(@Param("minPageCount") int minPageCount);

// 使用 JPQL 查询语句,带参数

// >(大于)、<(小于)

@Query("SELECT u FROM User u WHERE u.age > :minAge AND u.age < :maxAge") List<User> findUsersByAgeRange(int minAge, int maxAge);

// =(等于)

@Query("SELECT b FROM Book b WHERE b.author = :authorName")

List<Book> findByAuthor(@Param("authorName") String authorName);

// !=(不等于)

@Query("SELECT b FROM Book b WHERE b.pageCount != :excludedPageCount") List<Book> findBooksNotEqualTo(@Param("excludedPageCount") int excludedPageCount);

// LIKE(模糊匹配)

@Query("SELECT b FROM Book b WHERE b.title LIKE %:keyword%")

List<Book> findBooksByTitleContaining(@Param("keyword") String keyword);

// IN(在某个范围内)

@Query("SELECT b FROM Book b WHERE b.author IN :authorList") List<Book> findBooksByAuthorsIn(@Param("authorList") List<String> authorList);

// NOT IN(不在某个范围内)

@Query("SELECT b FROM Book b WHERE b.author NOT IN :excludedAuthors")
List<Book> findBooksByAuthorsNotIn(@Param("excludedAuthors") List<String> excludedAuthors);
// IS NULL(为空)

@Query("SELECT b FROM Book b WHERE b.author IS NULL")
List<Book> findBooksWhereAuthorIsNull();

// IS NOT NULL(不为空)
@Query("SELECT b FROM Book b WHERE b.author IS NOT NULL")
List<Book> findBooksWhereAuthorIsNotNull();

// BETWEEN AND(在某个范围内)

@Query("SELECT b FROM Book b WHERE b.pageCount BETWEEN :minPageCount AND :maxPageCount")
List<Book> findBooksByPageCountBetween(@Param("minPageCount") int minPageCount, @Param("maxPageCount") int maxPageCount);
// IS TRUEIS FALSE(布尔值判断)

@Query("SELECT b FROM Book b WHERE b.available = TRUE")
List<Book> findAvailableBooks();

@Query("SELECT b FROM Book b WHERE b.available = FALSE")
List<Book> findUnavailableBooks();

3.添加

4.批量添加

5.修改

6.删除

7.批量删除

相关推荐

  1. Spring Data JPA 提供默认查询方法

    2023-12-17 18:58:03       52 阅读
  2. 通过电脑查看Wi-Fi密码方法提供三种方式

    2023-12-17 18:58:03       29 阅读
  3. springboot接口提高查询速度方法

    2023-12-17 18:58:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 18:58:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 18:58:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 18:58:03       82 阅读
  4. Python语言-面向对象

    2023-12-17 18:58:03       91 阅读

热门阅读

  1. vscode

    vscode

    2023-12-17 18:58:03      53 阅读
  2. day 18二叉树(五)

    2023-12-17 18:58:03       56 阅读
  3. 《农业》特刊约稿

    2023-12-17 18:58:03       57 阅读
  4. 帆软BI目录

    2023-12-17 18:58:03       70 阅读
  5. 字节面试题(懂车帝)后端开发

    2023-12-17 18:58:03       68 阅读
  6. Python学习之复习MySQL-Day2(DML)

    2023-12-17 18:58:03       78 阅读
  7. vue使用自定义指令使用滚动加载

    2023-12-17 18:58:03       67 阅读
  8. Android手机使用Termux终端模拟器

    2023-12-17 18:58:03       86 阅读
  9. 如何设定一个N层CNN的Layer,CNN初始化

    2023-12-17 18:58:03       58 阅读