最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年07月14日 10:55:15   作者:wayne  
本篇文章主要介紹了詳解Spring Data JPA系列之投影(Projection)的用法,具有一定的參考價值,有興趣的可以了解一下

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

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

Select C from Customer c

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

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

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

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

1、增加CustomerProjection接口類

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注解來實現(xiàn)指定字段,除了指定字段也可以做聚合展示,比如有些地方需要展示客戶的全名,這里定義的getFullName()方法及注解@Value即完成這一操作。需要注意這里的@Value中的target表達(dá)式寫法及拼接方法。

2、增加CustomerRepository方法

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

3、增加CustomerController方法

  /**
   * 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());
    }
  }

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

另外spring-data-examples項目中有一些JPA的例子,可以用來學(xué)習(xí),梳理思路。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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring session實現(xiàn)Session共享

    Spring session實現(xiàn)Session共享

    本文主要介紹了Spring session實現(xiàn)Session共享,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 使用java項目搭建一個netty服務(wù)

    使用java項目搭建一個netty服務(wù)

    這篇文章主要為大家詳細(xì)介紹了如何使用java項目搭建一個netty服務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • SpringBoot整合Swagger2實例方法

    SpringBoot整合Swagger2實例方法

    在本篇文章里小編給大家整合了關(guān)于SpringBoot整合Swagger2的相關(guān)知識點內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-06-06
  • 如何使用Comparator比較接口實現(xiàn)ArrayList集合排序

    如何使用Comparator比較接口實現(xiàn)ArrayList集合排序

    這篇文章主要介紹了如何使用Comparator比較接口實現(xiàn)ArrayList集合排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解Java之冒泡排序與選擇排序

    詳解Java之冒泡排序與選擇排序

    這篇文章主要為大家介紹了Java之冒泡排序與選擇排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Java內(nèi)存模型知識詳解

    Java內(nèi)存模型知識詳解

    這篇文章主要介紹了Java內(nèi)存模型知識詳解,文中通過對內(nèi)存訪問時的交互關(guān)系圖解介紹的十分詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java郵件發(fā)送程序(可以同時發(fā)給多個地址、可以帶附件)

    Java郵件發(fā)送程序(可以同時發(fā)給多個地址、可以帶附件)

    不錯的功能比較齊全的郵件發(fā)送程序源碼
    2008-07-07
  • hutool?工具類基本使用教程

    hutool?工具類基本使用教程

    Hutool?是一個?Java?工具包,也只是一個工具包,它幫助我們簡化每一行代碼,減少每一個方法,讓?Java?語言也可以?“甜甜的”,下面通過本文學(xué)習(xí)下hutool?工具類基本使用教程,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • java壓縮文件和下載圖片示例

    java壓縮文件和下載圖片示例

    這篇文章主要為大家詳細(xì)介紹了java壓縮文件和下載圖片示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java線程中sleep和wait的區(qū)別詳細(xì)介紹

    Java線程中sleep和wait的區(qū)別詳細(xì)介紹

    Java中的多線程是一種搶占式的機制,而不是分時機制。搶占式的機制是有多個線程處于可運行狀態(tài),但是只有一個線程在運行
    2012-11-11

最新評論

康乐县| 秦安县| 高密市| 棋牌| 余姚市| 葫芦岛市| 齐齐哈尔市| 德保县| 大方县| 吉安县| 上栗县| 敖汉旗| 玉门市| 新泰市| 无极县| 西和县| 泰兴市| 平凉市| 庆元县| 日喀则市| 龙山县| 印江| 内黄县| 普陀区| 恩平市| 张家川| 苏州市| 沙坪坝区| 齐齐哈尔市| 马尔康县| 宣武区| 孟津县| 江川县| 怀远县| 兴山县| 察隅县| 阜新| 四子王旗| 莆田市| 牟定县| 普洱|