国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Spring Data JPA系列之投影(Projection)的用法

詳解Spring Data JPA系列之投影(Projection)的用法

2020-12-02 13:35wayne Java教程

本篇文章主要介紹了詳解Spring Data JPA系列之投影(Projection)的用法,具有一定的參考價值,有興趣的可以了解一下

本文介紹了Spring Data JPA系列之投影(Projection)的用法,分享給大家

在JPA的查詢中,有一個不方便的地方,@Query注解,如果查詢直接是

?
1
Select C from Customer c

,這時候,查詢的返回對象就是Customer這個完整的對象,包含所有字段,對于我們的示例并沒有什么問題,但是對于比較龐大的domain類,這個查詢時就比較要命,并不是所有的字段都能用到,比較頭疼。另外,如果定義

?
1
select c.firstName as firstName,c.lastName as lastName from Customer c

這個查詢結果,返回的對象是Object類型,而且無法直接轉換成Customer對象,這樣用起來就不是很方便。

對于這種情況,JPA提供了一種聲明方式來解決,即聲明一個接口類,然后直接使用這個接口類接受返回的數據即可。下面奉上代碼:

1、增加CustomerProjection接口類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.example.demo.dto;
 
import org.springframework.beans.factory.annotation.Value;
 
/**
 * Created by Administrator on 2017/7/9 0009.
 */
public interface CustomerProjection {
  @Value("#{target.firstName + ' ' + target.lastName}")
  String getFullName();
 
  String getFirstName();
 
  String getLastName();
}

這里聲明的方式是可以直接通過get+屬性名,這是普通的,另外也可以通過@Value注解來實現指定字段,除了指定字段也可以做聚合展示,比如有些地方需要展示客戶的全名,這里定義的getFullName()方法及注解@Value即完成這一操作。需要注意這里的@Value中的target表達式寫法及拼接方法。

2、增加CustomerRepository方法

?
1
2
@Query("SELECT c.firstName as firstName,c.lastName as lastName from Customer c")
Collection<CustomerProjection> findAllProjectedBy();

3、增加CustomerController方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * find by projections
 */
@RequestMapping("/findAllProjections")
public void findAllProjections(){
  Collection<CustomerProjection> projections = repository.findAllProjectedBy();
  System.out.println(projections);
  System.out.println(projections.size());
  for (CustomerProjection projection:projections){
    System.out.println("FullName:"+projection.getFullName());
    System.out.println("FirstName:"+projection.getFirstName());
    System.out.println("LastName:"+projection.getLastName());
  }
}

這里只是做了簡單示意,深入的內容需要自己去挖掘探索。不過關于Projection的資料比較少,我也是扒了不少資料才理解的差不多了,還需要多多實踐。

另外spring-data-examples項目中有一些JPA的例子,可以用來學習,梳理思路。https://github.com/spring-projects/spring-data-examples/tree/master/jpa

參考:

官方文檔,http://docs.spring.io/spring-data/jpa/docs/current/reference/html/

DEMO,https://github.com/icnws/spring-data-jpa-demo

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://spring4all.com/article/119

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色片网站在线 | 成年女人在线观看 | 久久久久成人精品 | 久久久久一区二区 | 亚洲精品国产综合 | 成人午夜精品视频 | 亚洲高清毛片一区二区 | 免费国产一区 | a欧美| 成人在线一区二区 | 欧美日韩精品一区 | 激情欧美一区二区三区中文字幕 | 久久久久综合精品福利啪啪 | 亚洲成人精品在线观看 | 日本免费黄色 | 美女在线视频一区二区 | 亚洲精彩视频 | av免费网站 | 成人区精品一区二区毛片不卡 | 无码日韩精品一区二区免费 | 日韩一区二区三区在线视频 | 国产精品乱码一区二区三区 | 欧美视频二区 | 中国电影黄色一级片免费观看 | 黄色一级网站视频 | 91av免费在线观看 | youjizz国产 | 性欧美成人播放77777 | 欧美福利 | 亚洲日本视频 | 超黄网站在线观看 | 日韩av一区二区在线观看 | 黄色毛片在线看 | 五月天激情综合网 | 亚洲va欧美va人人爽成人影院 | 99久久久精品国产一区二区 | 日日夜夜综合 | 亚洲成人激情在线 | 黄色a级网站| 国产免费久久 | 欧美 日韩 国产 成人 在线 91 |