之所以喜欢用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);
}
支持的查询关键字
关于 UserRepository 方法的返回值类型
对于 Repository 方法的返回类型,JPA 会帮助开发去匹配。目前支持的返回值类型可参考