Spring Data JPA 使用总结

本文记录了Spring data JPA 的一些细碎的规则。

findBy语法规则 :findOOXXByName 实际上等价 ==> findByName

比如:

User findFirstByOrderByLastnameAsc();

User findTopByOrderByAgeDesc();

Page<User> queryFirst10ByLastname(String lastname, Pageable pageable);

Slice<User> findTop3ByLastname(String lastname, Pageable pageable);

List<User> findFirst10ByLastname(String lastname, Sort sort);

List<User> findTop10ByLastname(String lastname, Pageable pageable);

JPA中支持的关键词

And:等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);
Or:等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);
Between:等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);

默认输入的是JPQL,SQL中的表名是JAVA对象名,字段名是实体对象的属性名

public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.firstname like %?1")
  List<User> findByFirstnameEndsWith(String firstname);
}

当nativeQuery = true时,填入的是原生的SQL

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
  User findByEmailAddress(String emailAddress);
}

如何批量更新数据?

rewriteBatchedStatements=true

打印执行时间统计信息

generate_statistics: true

需要打开日志级别

<Logger name="org.hibernate" level="info" includeLocation="true">
Logger>

关键词备忘录:

见参考链接

参考链接:
Supported keywords inside method names

你可能感兴趣的:(MySQL,Spring,Data,JPA,JPA,spring,cloud)