导读:文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Java Persistence API (JPA),他是一个存储API的标准,而Spring data JPA就是对JPA的一种实现,可以让我们方便的对数据进行存
文章目录
添加依赖
添加entity bean
创建 Dao
Spring Data Configuration
测试
Spring Boot 之Spring data JPA简介
JPA的全称是Java Persistence API (JPA),他是一个存储API的标准,而Spring data JPA就是对JPA的一种实现,可以让我们方便的对数据进行存取。按照约定好的方法命名规则写dao层接口,从而在不实现接口的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。
Spring data JPA可以看做是对Hibernate的二次封装。本文将会以一个具体的例子来讲解,怎么在Spring Boot中使用Spring data JPA。
publicinterfaceBookRepositoryextendsJpaRepository<Book, Long>{
List<Book>findByTitle(String title);@Query("SELECT b FROM Book b WHERE LOWER(b.title) = LOWER(:title)")
Book retrieveByTitle(@Param("title") String title);}
这个方法我们是不需要自己去实现的,Spring Data JPA会帮我们去实现。我们可以使用find…By,read…By,query…By,count…By,和 get…By的格式定义查询语句,By后面接的就是Entity的属性。除了And,我们还可以使用Or来拼接方法,下面我们再举个例子:
interfacePersonRepositoryextendsRepository<Person, Long>{
List<Person>findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);// Enables the distinct flag for the query
List<Person>findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
List<Person>findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);// Enabling ignoring case for an individual property
List<Person>findByLastnameIgnoreCase(String lastname);// Enabling ignoring case for all suitable properties
List<Person>findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname);// Enabling static ORDER BY for a query
List<Person>findByLastnameOrderByFirstnameAsc(String lastname);
List<Person>findByLastnameOrderByFirstnameDesc(String lastname);}
当然,处理方法拼接外,我们还可以自定义SQL查询语句:
@Query("SELECT b FROM Book b WHERE LOWER(b.title) = LOWER(:title)")
Book retrieveByTitle(@Param("title") String title);
自定义查询语句给Spring data JPA提供了更大的想象空间。
Spring Data Configuration
要使用Spring Data JPA,我们还需要在配置文件中指定要扫描的目录,使用@EnableJpaRepositories注解来实现: