本文记录了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