當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Data JPA 从入门到精通~SpEL表达式的支持
生活随笔
收集整理的這篇文章主要介紹了
Spring Data JPA 从入门到精通~SpEL表达式的支持
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在 Spring Data JPA 1.4 以后,支持在 @Query 中使用 SpEL 表達式(簡介)來接收變量。
SpEL 支持的變量
| 變量名 | 使用方式 | 描述 |
| entityName | select x from #{#entityName} x | 根據指定的Repository自動插入相關的entityName |
有兩種方式能被解析出來:
如果定了 @Entity 注解,直接用其屬性名。
如果沒定義,直接用實體的類的名稱。
在以下的例子中,我們在查詢語句中插入表達式:
@Entity("User") public class User {@Id@GeneratedValueLong id;String lastname; } //Repository寫法 public interface UserRepository extends JpaRepository<User, Long> {@Query("select u from #{#entityName} u where u.lastname = ?1")List<User> findByLastname(String lastname); }這個 SPEL 的支持,比較適合自定義的 Repository,如果想寫一個通用的 Repository 接口,那么可以用這個表達式來處理:
@MappedSuperclass public abstract class AbstractMappedType {…String attribute; } @Entity public class ConcreteType extends AbstractMappedType { … } @NoRepositoryBean public interface MappedTypeRepository<T extends AbstractMappedType> extends Repository<T, Long> {@Query("select t from #{#entityName} t where t.attribute = ?1")List<T> findAllByAttribute(String attribute); } public interface ConcreteRepository extends MappedTypeRepository<ConcreteType> { … }MappedTypeRepository 作為一個公用的父類,自己的 Repository 可以繼承它,當調用 ConcreteRepository 執行 findAllByAttribute 方法的時候執行結果如下:
select t from ConcreteType t where t.attribute = ?1
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Spring Data JPA 从入门到精通~SpEL表达式的支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Guava入门~CharMatcher
- 下一篇: HttpClient 指南思维导图笔记