SpringBoot的數據訪問

SpringBoot的數據訪問主要介紹的是Spring Data JPA和Spring Data REST

Spring Data JPA

定義數據訪問層

使用Spring Data JPA建立數據訪問層非常簡單,只需定義一個繼承了JpaRepository的接口即可,定義如下

public interface PersonRepository  extends JpaRepository<Person,Long>

繼承 JpaRepository接口意味著我們默認已經有了下面的數據訪問操作方法

List<T> findAll();
List<T> findAll(Sort sort);
List<T> findAll(Iterable<ID> ids);
<S extends T> List<S> save(Iterable<S> entities);
void flush();
<S extends T> saveAndFlush(S entity);
void deleteInBatch(Iterable<T> entities);
void deleteAllInBatch();
T getOne(ID id);

配置使用Spring Data JPA

在Spring環境中,使用Spring Data JPA可通過@EnableJpaRepositories注解來開啟Spring Data JPA的支持。

定義查詢方法

常規查詢:根據屬性名來定義查詢方法

//通過名字相等查詢,參數為name
//相當于JPQL:select p from Person p where p.name = ?
List<Person> findByName(String name);
//通過名字like查詢,參數為name
//相當于JPQL:select p from Person p where p.name like ?
List<Person> findByNameLike(String name);
//通過名字和地址查詢,參數為name,和Address
//相當于JPQL:select p from Person p where p.name like ?
List<Person> findByNameAndAddress(String name,String Address);

從代碼可以看出,Spring Data JPA的關鍵字能代替一些簡單的查詢。如上Like ,And,findBy等。還有如下的一些關鍵字


這里寫圖片描述

限制結果數量

數量結果使用top/first關鍵字來實現的。例如

List<Person> findFirst10ByName

使用JPA的NamedQuery查詢

如下在某個實體上定義NamedQuery方法


@Entity
@NamedQuery(name="Person.withNameAndAddressNamedQuery",query = "select p from Person p where p.name=?1 and p.address=?2")
public class Person

接下來在repository文件中只需這樣定義即可:

   List<Person>  withNameAndAddressNamedQuery(String name,String address);

使用@Query查詢

使用@Query查詢的時候是直接將@Query語句定義到Repository文件中的。如:

    @Query("select p from Person p where p.name=:name and p.address=:address")
    Person withNameAndAddressQuery(@Param("name")String name,@Param("address")String address);

Spring Data REST

??Spring Data JPA是基于Spring Data的Repository之上,可以將repository自動輸出為Rest資源。目前Spring Data REST支持將
Spring Data JPA,Spring Data MongoDB,Spring Data Neo4j,Spring Data GemFire,Spring Data Cassandra的repository自動轉化為Rest服務。

SpringMVC中使用Spring Data REST

??SpringMVC中使用Spring Data REST非常簡單,Spring 的配置是定義在RepositoryRestMvcConfiguration(在Spring的包中)配置累已經配置好了。我們可以通過繼承此類或者直接在自己的配置類上@Import此配置類。

SpringBoot中使用Spring Data REST

SpringBoot中使用Spring Data REST就更簡單了。只需要在pom.xml文件中添加spring-boot-starter-data-rest依賴就可以了。無需其他的配置。Spring Boot通過在application.properties中配置以“spring.data.rest”為前綴的屬性來配置RepositoryRestConfiguration。例如

spring.data.rest.base-path= /api //定義API接口的前綴

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容