基本查询也分为两种,一种是 Spring Data 默认已经实现,一种是根据查询的方法来自动解析成 SQL。
1、预先生成方法
Spring Boot Jpa默认预先生成了一些基本的CRUD方法。
(1)继承 JpaRepository
public interface UserRepository extends JpaRepository<User, Long> {
}
(2)使用默认方法
@Test
public void testBaseQuery() throws Exception {
User user=new User();
userRepository.findAll();
userRepository.findOne(1l);
userRepository.save(user);
userRepository.delete(user);
userRepository.count();
userRepository.exists(1l);
// …
}
就不解释了根据方法名就看出意思来
2、自定义简单查询
自定义的简单查询就是根据方法名来自动生成 SQL,主要的语法
是findXXBy,readAXXBy,queryXXBy,countXXBy,getXXBy后面跟属性名称:
User findByUserName(String userName);
也使用一些加一些关键字 And、Or
User findByUserNameOrEmail(String username, String email);
修改、删除、统计也是类似语法
Long deleteById(Long id);
Long countByUserName(String userName)
基本上 SQL 体系中的关键词都可以使用,例如: like、ignoreCase、OrderBy。
List findByEmailLike(String email);
User findByUserNameIgnoreCase(String userName);
List findByUserNameOrderByEmailDesc(String email);
具体的关键字,使用方法和生成sql如下
| Keyword | Sample | JPQL snippet |
| — | — | — |
| And | findByLastnameAndFirstname | … where x.lastname = ?1 and x.firstname = ?2 |
| Or | findByLastnameOrFirstname | … where x.lastname = ?1 or x.firstname = ?2 |
| Is,Equals | findByFirstnameIs,findByFirstnameEquals | … where x.firstname = ?1 |
| Between | findByStartDateBetween | … where x.startDate