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

SpringData @Query和@Modifying注解原理解析

 更新時(shí)間:2020年08月27日 11:18:42   作者:IT-執(zhí)念  
這篇文章主要介紹了SpringData @Query和@Modifying注解原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

@Query注解查詢適用于所查詢的數(shù)據(jù)無(wú)法通過(guò)關(guān)鍵字查詢得到結(jié)果的查詢。這種查詢可以擺脫像關(guān)鍵字查詢那樣的約束,將查詢直接在相應(yīng)的接口方法中聲明,結(jié)構(gòu)更為清晰,這是Spring Data的特有實(shí)現(xiàn)。

索引參數(shù)與命名參數(shù)

    1、索引參數(shù)如下所示,索引值從1開始,查詢中"?X"個(gè)數(shù)需要與方法定義的參數(shù)個(gè)數(shù)相一致,并且順序也要一致?!    ?/p>

 @Query("SELECT p FROM Person p WHERE p.lastName = ?1 AND p.email = ?2")
 List<Person> testQueryAnnotationParams1(String lastName, String email);

    注釋:上面代碼中的?1,?2表示參數(shù)的占位符,需要和方法中所傳遞的參數(shù)順序一致。X是從1開始。

    2、命名參數(shù)(推薦使用此方式):可以定義好參數(shù)名,賦值時(shí)使用@Param("參數(shù)名"),而不用管順序。

 // 為@Query注解傳遞參數(shù)的方式1:命名參數(shù)
 @Query("SELECT p FROM Person p WHERE p.lastName = :lastName AND p.email = :email")
 List<Person> testQueryAnnotationParams2(@Param("email") String email, @Param("lastName") String lastName);

    注釋:上面代碼中:lastName ,:email 表示為參數(shù)命名,方法中所傳遞的參數(shù)使用@Param注解標(biāo)識(shí)命名參數(shù)。這種方式不用管參數(shù)的順序。

    3、含有LIKE關(guān)鍵字的查詢

方式1:可以在占位符上添加"%",這樣在查詢方法中就不用添加"%"

 // like查詢 Spring Date 允許在占位符上添加%
 @Query("SELECT p FROM Person p WHERE p.lastName LIKE %?1% OR p.email LIKE %?2%")
 List<Person> testQueryAnnotationLikeParam(String lastName, String email);

@Test
  public void testAnnoationParams3() {
    List<Person> persons = personRepsitory.testQueryAnnotationLikeParam("A", "A@126.com");
    System.out.println(persons);
  }

方式2:不在占位符上添加"%",這樣就必須在查詢方法的參數(shù)上添加"%"

// like查詢
@Query("SELECT p FROM Person p WHERE p.lastName LIKE ?1 OR p.email LIKE ?2")
List<Person> testQueryAnnotationLikeParam2(String lastName, String email);

@Test
  public void testAnnoationParams4() {
    List<Person> persons = personRepsitory.testQueryAnnotationLikeParam2("%A%", "%A@126.com%");
    System.out.println(persons);
  }

方式3:在命名參數(shù)上添加"%"

// like查詢 使用命名參數(shù)
@Query("SELECT p FROM Person p WHERE p.lastName LIKE %:lastName% OR p.email LIKE %:email%")
List<Person> testQueryAnnotationLikeParam3(@Param("email") String email, @Param("lastName") String lastName);

4、使用原生SQL進(jìn)行查詢

**
   * 設(shè)置nativeQuery=true 即可以使用原生的SQL進(jìn)行查詢
   * @return
   */
  @Query(value = "SELECT count(id) FROM jpa_persons", nativeQuery = true)
  long getTotalCount();

注釋:當(dāng)設(shè)置nativeQuery=true即可以使用原生SQL進(jìn)行查詢

@Modifying注解

1、在@Query注解中編寫JPQL實(shí)現(xiàn)DELETE和UPDATE操作的時(shí)候必須加上@modifying注解,以通知Spring Data 這是一個(gè)DELETE或UPDATE操作。

2、UPDATE或者DELETE操作需要使用事務(wù),此時(shí)需要 定義Service層,在Service層的方法上添加事務(wù)操作。

3、注意JPQL不支持INSERT操作。  

@Transactional
  @Modifying
  @Query("UPDATE Person p SET p.email = :email WHERE p.id = :id")
  void updatePersonEmail(@Param("id") Integer id, @Param("email") String email);

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

相關(guān)文章

  • Java代理模式實(shí)例分析

    Java代理模式實(shí)例分析

    這篇文章主要介紹了Java代理模式,結(jié)合實(shí)例形式對(duì)比分析了java代理模式的使用方法與相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼分享

    Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼分享

    本文給大家介紹的是如何使用Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-07-07
  • Java中@Async異步失效的9種場(chǎng)景

    Java中@Async異步失效的9種場(chǎng)景

    最近在項(xiàng)目某個(gè)方法使用@Async注解,但是該方法還是同步執(zhí)行了,異步不起作用,到底是什么原因呢?接下來(lái)本文給大家介紹了Java?@Async異步失效的9種場(chǎng)景,需要的朋友可以參考下
    2024-05-05
  • java Spring MVC4環(huán)境搭建實(shí)例詳解(步驟)

    java Spring MVC4環(huán)境搭建實(shí)例詳解(步驟)

    spring WEB MVC框架提供了一個(gè)MVC(model-view-controller)模型-視圖-控制器的結(jié)構(gòu)和組件,利用它可以開發(fā)更靈活、松耦合的web應(yīng)用。MVC模式使得整個(gè)服務(wù)應(yīng)用的各部分(控制邏輯、業(yè)務(wù)邏輯、UI界面展示)分離開來(lái),使它們之間的耦合性更低
    2017-08-08
  • log4j2異步打印性能提升方式

    log4j2異步打印性能提升方式

    這篇文章主要介紹了log4j2異步打印性能提升方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JAVA中跳出當(dāng)前多重嵌套循環(huán)的方法詳解

    JAVA中跳出當(dāng)前多重嵌套循環(huán)的方法詳解

    今天在看面試題時(shí),發(fā)現(xiàn)了這個(gè)問(wèn)題,因?yàn)樵赑HP中跳出多次循環(huán)可以使用break數(shù)字來(lái)跳出多層循環(huán),但這在java中并不好使,這篇文章主要給大家介紹了關(guān)于JAVA中跳出當(dāng)前多重嵌套循環(huán)的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Zookeeper的選舉機(jī)制詳解

    Zookeeper的選舉機(jī)制詳解

    Zookeeper的選舉機(jī)制是基于ZAB協(xié)議的Paxos變種,通過(guò)LOOKING、PROPOSAL、ACCEPT和COMMIT四個(gè)階段,確保集群中只有一個(gè)領(lǐng)導(dǎo)節(jié)點(diǎn),選舉過(guò)程中,服務(wù)器通過(guò)投票和收集投票信息,確定ZXID和SID來(lái)選擇領(lǐng)導(dǎo)者,FastLeaderElection算法優(yōu)化了選舉過(guò)程,提高選舉效率
    2025-02-02
  • java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例

    java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例

    用Java創(chuàng)建文件或目錄非常簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Spring AOP如何整合redis(注解方式)實(shí)現(xiàn)緩存統(tǒng)一管理詳解

    Spring AOP如何整合redis(注解方式)實(shí)現(xiàn)緩存統(tǒng)一管理詳解

    這篇文章主要給大家介紹了關(guān)于Spring AOP如何整合redis(注解方式)實(shí)現(xiàn)緩存統(tǒng)一管理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 淺談javaSE 面向?qū)ο?Object類toString)

    淺談javaSE 面向?qū)ο?Object類toString)

    下面小編就為大家?guī)?lái)一篇淺談javaSE 面向?qū)ο?Object類toString)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06

最新評(píng)論

牡丹江市| 平塘县| 海兴县| 西盟| 开平市| 福安市| 周口市| 二连浩特市| 湛江市| 梧州市| 黄平县| 开阳县| 崇礼县| 东丰县| 闻喜县| 闻喜县| 枣阳市| 天峨县| 榆树市| 中西区| 武陟县| 大同县| 威信县| 拜城县| 金堂县| 肃宁县| 盈江县| 常宁市| 原阳县| 石泉县| 武夷山市| 印江| 雷波县| 璧山县| 开江县| 麦盖提县| 乐昌市| 朝阳县| 白山市| 湘潭市| 石狮市|