[关闭]
@PheonixHkbxoic 2018-03-07T21:39:05.000000Z 字数 1331 阅读 729

SpringBoot-JPA

SpringBoot



1.定义数据访问接口

1.1 继承JpaRepository

  1. public interface PersonRepository extends JpaRepository<Person, Long> {
  2. List<Person> findByAddress(String name);
  3. Person findByNameAndAddress(String name, String address);
  4. @Query("select p from Person p where p.name=:name and p.address=:address")
  5. Person withNameAndAddressQuery(@Param("name") String name, @Param("address") String address);
  6. Person withNameAndAddressNamedQuery(String name, String address);
  7. }

1.2 当我们继承JpaRepository接口后,我们就自动具备了如下数据访问方法:

  1. List<T> findAll();
  2. List<T> findAll(Sort var1);
  3. List<T> findAll(Iterable<ID> var1);
  4. <S extends T> List<S> save(Iterable<S> var1);
  5. void flush();
  6. <S extends T> S saveAndFlush(S var1);
  7. void deleteInBatch(Iterable<T> var1);
  8. void deleteAllInBatch();
  9. T getOne(ID var1);
  10. <S extends T> List<S> findAll(Example<S> var1);
  11. <S extends T> List<S> findAll(Example<S> var1, Sort var2);

2.简单的查询

  1. 我们可以在接口中定义查询方法,可以按照属性名来查询,但是方法的命名方式是固定的,比如第一个方法和第二个方法,第一个方法表示根据一个属性查询,第二个方法表示根据多个属性查询,findBy、And等可以算作是这里的查询关键字了,如果写作其他名称则系统不能识别,类似的关键字还有Like、Or、Is、Equals、Between等,而这里的findBy关键字又可以被find、read、readBy、query、queryBy、get、getBy等来代替。

  2. 在查询的过程中我们也可以限制查询结果,这里使用的关键字是top、first等,比如查询前10条数据我们可以写作:
    List findFirst10ByName(String name);

  3. 使用NamedQuery来查询,就是我们直接在实体类上使用@NamedQuery注解来定义查询方法和方法名,一个名称对应一个查询语句,具体可以参考我们上文的实体类
  4. 我们也可以向第三个方法那样添加@Query注解,当我调用这个方法的时候使用这个注解中的sql语句进行查询,方法的参数则是注解中的占位符的值。

3.带参查询

4.分布查询

5.复杂查询

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注