Spring Data JPA @Query

Spring Data JPA @Query

相隔約七、八年,重回Java工程師,

不再是自己寫自己用的東西,而是跟著團隊寫,

何時開始流行Spring Boot,我也不知道,有種世代落差的感覺

在面試時,面試主管會介紹,我們公司會使用Spring Boot、Spring Cloud、MicroService,在技術自我封閉的狀況下,

我自己用自己 Native的寫法,撰寫的Java,早已更不上別人使用的技術。

等到自己重回Java工程師,就像寫ASP進入了ASP.NET一樣,就像寫ASP.NET Web Form 進入了 ASP.NET MVC一樣,好多新花樣的東西,早搞不懂這些技術了。

幸好以前第一次當Java工程師,至少還有摸到Spring、Hibernate、JPA,一些小觀念如 IoC、DI、AOP 稍維的知道。

只是這次,是沒想到用起來這麼的特殊。

 

因為工作上,需要特殊的作法去撈資料,可能現有的程式碼沒有參考的地方,

另外又多了一些好奇怪的東西,為什麼只有一個interface就能有實體,誰幫你撰寫了實體?(突然眼花了我)

看了以下這篇文章

https://www.baeldung.com/spring-data-jpa-query

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

突然明白了一些

https://www.baeldung.com/spring-data-derived-queries

當Interface 繼承了 JpaRepository

interface UserRepository extends JpaRepository<User, Integer>

只要method有一些關鍵字,就會自動幫實作相關的方法,而不必實作interface,

他會自動依賴注入實體至這些Repository

如下method撰寫如下

List<User> findByName(String name);

就等於下了  select * from User where name = @name 的意思

如果要客製化,使用自己自訂的SQL呢?

像我需要count,或統計

就可以使用

@Query

@Query("SELECT u FROM User u WHERE u.status = 1")
Collection<User> findAllActiveUsers();

我這篇,主要介紹,一個新概念,以前我七、八年前的Java時代,都沒有的概念,如今讓我震憾到。

可以點進我貼的連結,取得詳細的用法。

我只講述我的新發現。