Spring-data-JPA 查询创建机制(Query Creation)

59 阅读1分钟

之所以喜欢用Spring data jpa,除了它更符合 DDD 软件设计思想之外,还提供了约定优于配置 查询创建机制,让开发体验十分美好。

基本使用

所谓的 Query Creation ,其实就是通过方法命名派生出查询的 SQL,常见的例子如根据用户名和密码查询用户信息,我们可以这样去定义 JPA 的查询方法

public interface UserRepository extends Repository<User, Long> {

  List<User> findByUserNameAndPassword(String userName, String password);
}

//UserEntity.class
public class UserEntity {
    private String userName;
    private String password;
}

JPA 会根据实体的定义和 Repository 的方法命名信息,生成一条 SQL

select u from User u where u.userName=?1 and u.password=?2

配合分页

如果想要分页的话,主要在查询方法中扩充一个Pageable对象即可

public interface UserRepository extends Repository<User, Long> {

  Page<User> findByUserNameAndPassword(String userName, String password,Pageable pageable);
}

支持的查询关键字

docs.spring.io/spring-data…

关于 UserRepository 方法的返回值类型

对于 Repository 方法的返回类型,JPA 会帮助开发去匹配。目前支持的返回值类型可参考

docs.spring.io/spring-data…