使用 Spring Data JPA 從資料庫表中選擇特定列
在某些情況下,我們只需要檢索實體的選定屬性。本教程解釋瞭如何以不同的方式實現這一目標。
一個 API 返回包含所有屬性的所有客戶的列表。但通常情況下,不需要獲取所有屬性。從資料庫中只檢索所需的資料始終是一個好習慣。這樣做的主要原因是為了提高應用程式的效能。下面,我將展示如何以不同的方式從資料庫中僅檢索一組特定的資料。
1. 只選擇一個實體的一個屬性
該應用程式公開一個端點,該端點僅返回客戶的電話號碼。當只需要一個屬性(欄位)時,在儲存庫介面中建立自定義方法。此方法使用@Query 註釋進行註釋。這個註解有一個自定義的 JPQL 語句,它只選擇指定的屬性。
@Query("SELECT phoneNumber FROM CustomerEntity customer") List<String> findPhoneNumbers(); |
2. 使用自定義 DTO 物件選擇實體的特定屬性
大多數時候我們需要返回一個實體的多個屬性。該應用程式的 API 僅返回客戶的全名和地址。類 (DTO) 是使用選定的欄位和接受這些欄位作為引數的建構函式建立的。儲存庫介面中的自定義方法返回使用此類建立的物件列表。該方法有一個@Query 註釋。此註釋有一個 JPQL 查詢,該查詢從具有選定欄位的自定義類建立物件。欄位被傳遞給這個類的建構函式。必須在查詢中指定完全限定的類名。
@Query("SELECT new com.polovyi.ivan.tutorial.entity.dto.MailingAddressDTO (fullName, address) FROM CustomerEntity customer") List<MailingAddressDTO> findMailingAddresses(); |
3. 使用基於介面的投影選擇實體的特定屬性
檢索多個屬性的另一種選擇是使用基於介面的投影。在這種情況下,介面是使用訪問器方法建立的,用於要檢索的屬性。一個示例應用程式有一個 API,它返回每個客戶的全名和工作。該 API 呼叫儲存庫,該儲存庫返回從實現上述介面的類建立的物件列表。Spring 會“即時”處理這個問題。然後在這個方法的@Query註解中,指定了JPQL查詢。確保對欄位使用別名,因為沒有它們將無法工作。
@Query("SELECT fullName AS fullName, customer.job AS job FROM CustomerEntity customer") List<CustomerJobProjection> findAllJobs(); |
結論
應用程式的效能非常重要。每個開發人員都必須優化應用程式,使其快速高效。許多方法之一是最小化應用程式和資料庫之間的資料傳輸。它可以通過使用本教程中解釋的技術來實現。
相關文章
- 使用Spring Data JPA進行資料庫操作Spring資料庫
- Spring Boot整合Spring Data JPA進行資料庫操作Spring Boot資料庫
- Spring Data JPA如何用於資料庫檢視?Spring資料庫
- Spring Data JPA 的使用Spring
- Spring Data JPA中TransactionInterceptorSpring
- Spring Data JPA中ConfigurableTransactionManagerSpring
- Spring Data JPA簡單使用Spring
- Spring Data JpaSpring
- Spring Data JPA中事務使用異常TransactionUsageExceptionSpringException
- Spring Data JPA之Spring Data JPA快速入門(三)Spring
- Spring Data JPA中事務ReactiveTransactionManagerSpringReact
- Spring Data JPA 實現聯表查詢Spring
- Spring Data Jpa APISpringAPI
- Spring Boot:整合Spring Data JPASpring Boot
- spring data jpa 多對一聯表查詢Spring
- Spring JPA資料庫連線MySQLSpring資料庫MySql
- spring data jpa查詢Spring
- SpringBoot整合Spring Data JPASpring Boot
- Spring Data JPA:解析SimpleJpaRepositorySpring
- Spring Data JPA:解析CriteriaQuerySpring
- Spring Data JPA:解析CriteriaBuilderSpringUI
- 使用Spring Data Jpa遇到問題彙總Spring
- Spring Data JPA系列2:SpringBoot整合JPA詳細教程,快速在專案中熟練使用JPASpring Boot
- Spring Data JPA中事務超時TransactionTimedOutExceptionSpringException
- Spring Data JPA REST Query CriteriaSpringREST
- Spring Data JPA原始碼案例Spring原始碼
- 使用JPA連線資料庫資料庫
- Spring Data JPA 在 @Query 中使用投影的方法Spring
- Spring Data JPA中事務回滾意外RollbackExceptionSpringException
- Spring Data JPA中事務監聽器TransactionExecutionListenerSpring
- Spring Boot中使用JPA呼叫自定義的資料庫函式Spring Boot資料庫函式
- spring-data-jpa使用快取的注意事項Spring快取
- spring data JPA 模糊查詢 --- 使用 LIKE --- 的寫法Spring
- 一文搞定 Spring Data JPASpring
- Spring Data JPA 參考文件三Spring
- Spring Boot (五)Spring Data JPA 操作 MySQL 8Spring BootMySql
- 【Spring技術棧】初識Spring Data JPASpring
- Spring Data JPA中實現更新插入三種方法Spring