zoukankan      html  css  js  c++  java
  • Spring Data JPA 提供的各种Repository接口作用

    各种Repository接口继承关系:

    Repository :

    public interface UserRepository  extends Repository<User, Integer> {
    }
    
    • 方法命名规则查询方式:
    findByNameLike(String name)
    findByName(String name)
    findByNameAndAge(String name, Integer age)
    findByNameOrAddress(String name)
    ...
    

    参考:

    https://www.jianshu.com/p/1d6f27f675bb
    https://www.jianshu.com/p/1d6f27f675bb
    
    • 基于@Query注解的查询和更新

      1. 基于@Query注解的查询

        • JPQL 方式

          @Query("form User WHERE name = ?1")
          List<User> findByName(String name);
          

          ps: JPQL 占位符索引是从1开始的。

        • SQL 方式

          @Query("select * from User WHERE name = ?1")
          List<User> findByName(String name);
          
      2. 基于@Query注解的更新

        基于@Query注解的更新需要增加@Modifying

        • JPQL 方式

          @Query("Update User set name = ?1 WHERE id = ?2")
          @Modifying
          int updateNameAndId(String name, Integer id);
          
        • SQL 方式

          @Query("update user set name = ?1 WHERE id = ?2")
          @Modifying
          int updateNameAndId(String name, Integer id);
          

    CrudReposiroty :

    CrudRepository: 主要是进行增删改查的方法 
    

    PagingAndSortingRepository :

    PagingAndSortingRepository: 主要是进行排序或者分页
    

    JPARepository

    JPARepository: 主要对继承父接口中方法的返回值进行了适配,因为在父类接口中通常都返回迭代器,需要我们自己进行强制类型转化。而在JpaRepository中,直接返回了List
    

    JpaSpecificationExecutor

    JpaSpecificationExecutor: 主要提供了多条件查询的支持,并且可以在查询中添加分页和排序。 
    

    总结 :

    Spring Data Jpa中一共提供了

    Repository:
    • 支持方法命名查询 (提供了findBy + 属性方法 )

    • @Query

      ​ HQL: nativeQuery 默认false

        SQL: nativeQuery 默认true

        	更新的时候,需要配合@Modifying使用
      
    CurdRepository:

    继承了Repository 主要提供了对数据的增删改查

    PagingAndSortRepository:

    继承了CrudRepository 提供了对数据的分页和排序,缺点是只能对所有的数据进行分页或者排序,不能做条件判断

    JpaRepository:

    继承了PagingAndSortRepository,开发中经常使用的接口,主要继承了PagingAndSortRepository,对返回值类型做了适配

    JpaSpecificationExecutor

    提供多条件查询

  • 相关阅读:
    76. 最小覆盖子串 (JAVA)
    95. 不同的二叉搜索树 II (Java)
    HTTP/HTTPS协议 & GraphQL(非RESTFUL方式)
    Round Robin
    94. Binary Tree Inorder Traversal (Java)
    90. Subsets II (Java)
    Notepad++ 连接 FTP 实现编辑 Linux文件
    Git
    根据进程ID查找运行程序目录
    Flink 的广播变量
  • 原文地址:https://www.cnblogs.com/linhuaming/p/11823952.html
Copyright © 2011-2022 走看看