免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      總結(jié)下SpringData JPA 的常用語法

      SpringData JPA常用有兩種寫法,一個是用Jpa自帶方法進(jìn)行CRUD,適合簡單查詢場景、例如查詢?nèi)繑?shù)據(jù)、根據(jù)某個字段查詢,根據(jù)某字段排序等等。另一種是使用注解方式,@Query、@Modifying。

      1.方法方式

      方法說明

      接口方法如下,方法作用見注釋:

      public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor { // 無條件,查詢?nèi)坑涗? List findAll(); // 排序查詢 List findAll(Sort var1); // 根據(jù)主鍵ID查詢 List findAllById(Iterable var1); // 批量保存集合數(shù)據(jù) List saveAll(Iterable var1); void flush(); S saveAndFlush(S var1); // 批量刪除 void deleteInBatch(Iterable var1); // all in 全部刪除 void deleteAllInBatch(); // 查詢一條記錄 T getOne(ID var1); // 條件查詢 List findAll(Example var1); // 條件查詢,帶排序 List findAll(Example var1, Sort var2);}復(fù)制代碼

      例子

      一般dao實(shí)現(xiàn)JpaRepository接口,直接調(diào)用JpaRepository中的方法就可以實(shí)現(xiàn)了簡單查詢,例如查詢User實(shí)例列表:

      // 構(gòu)建user的Example對象Example example =Example.of(User);List users = userRepository.findAll(example);復(fù)制代碼

      2.注解方式

      jpa實(shí)現(xiàn)CRUD的主要注解是@Query

      注解說明

      @Query注解主要有以下參數(shù),參數(shù)作用如下:

      • value:SQL語句
      • countQuery: 分頁查詢時統(tǒng)計總數(shù)
      • nativeQuery: 使用執(zhí)行這個方法的時候執(zhí)行原生sql語句,直接寫數(shù)據(jù)庫中的實(shí)際表名和表的實(shí)際字段名

      @Query的代碼如下:

      @Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})@QueryAnnotation@Documentedpublic @interface Query { String value() default “”; String countQuery() default “”; String countProjection() default “”; boolean nativeQuery() default false; String name() default “”; String countName() default “”;}復(fù)制代碼

      例子

      • 使用注解方式分組查詢

      跟正常寫sql語句相同,將sql寫到value中,并且nativeQuery = true。下面例子是根據(jù)task_id進(jìn)行分組查詢task集合

      @Query(value = “select task_id from task group by task_id”, nativeQuery = true)List queryByGroup();復(fù)制代碼

      • 使用注解方式排序

      根據(jù)task_id進(jìn)行排序查詢task集合

      @Query(value = “select task_id,task_date from task order by task_id”, nativeQuery = true)List queryOrder();復(fù)制代碼

      • 使用注解方式條件查詢

      條件查詢時可以使用字段名 操作符 ?;例如:task_date >= ?,使用位置匹配?。也可以使用字段名 操作符 :屬性名;例如:task_date >= :startDate,使用屬性名匹配,推薦使用后者,如果字段順序修改,不影響匹配結(jié)果。下面是根據(jù)任務(wù)時間(task_date)段內(nèi)和未被刪除(deleted)的任務(wù)

      @Query(value = “select task_id,task_date from task where task_date >=? and task_date <=? and deleted=0 ", nativeQuery = true)List queryDate(@Param("startDate") String startDate, @Param("endDate") String endDate);復(fù)制代碼

      • 使用注解方式修改

      修改一條數(shù)據(jù)需要加上@Modifying用于標(biāo)識是修改操作,默認(rèn)事務(wù)等級是只讀,所以還需要加上@Transactional,這樣覆蓋了默認(rèn)的@Transactional才可以執(zhí)行修改操作。下面是根據(jù)task_id更新task表的備注信息

      @Transactional(rollbackOn = Exception.class)@Modifying@Query(value = “update task set remark = ? where task_id=?”, nativeQuery = true)void updateRemark(@Param(“remark”) String remark, @Param(“taskId”) String taskId);復(fù)制代碼

      多表聯(lián)查,且多條件、分頁查詢怎么寫?

      復(fù)雜的查詢需要注意,以下使用一個Mysql的多表聯(lián)查的例子來說明復(fù)雜的查詢要怎么寫。下面是user表task表關(guān)聯(lián)查詢出任務(wù)名稱、任務(wù)ID、用戶名稱這些信息,并且根據(jù)task_name、task_date進(jìn)行過濾;根據(jù)task_date倒序。

      共有幾點(diǎn)需要注意:

      • 多表聯(lián)查使用正常的JOIN就可以
      • 多條件是常見的情況,需要區(qū)別傳入的條件是否要去執(zhí)行,這種情況需要使用where 1=1 and 這種方式來保證條件不傳時仍然正常查詢。
      • 分頁查詢需要傳入分頁參數(shù)Pageable,并且寫countQuery來統(tǒng)計總數(shù)。
      • 多條件查詢關(guān)鍵:if(:參數(shù)!=”,k.字段名 =:參數(shù),1=1),這里是使用了if進(jìn)行判斷,這個寫法類似Mybatis xml中的標(biāo)簽。if的含義是代表傳入的參數(shù)如果不為””(Spring類型空是””而不是null)將參數(shù)傳入,如果為空時顯示1=1 代表參數(shù)為真,對查詢結(jié)果不產(chǎn)生作用。

      代碼:

      @Query(value = ” select a.task_name, a.task_id,u.user_name” + ” from task a ” + ” LEFT JOIN usert u” + ” ON a.user_id = u.user_id” + ” where a.deleted=0 ” + ” AND if(:taskName!=”,a.task_name =:taskName,1=1)” + ” AND if(:startDate!=”,a.task_date >=:startDate,1=1)” + ” AND if(:endDate!=”,a.task_date =:startDate,1=1)” + ” AND if(:endDate!=”,a.task_date <=:endDate,1=1)" + " order by a.task_date desc")Page queryUserTaskPage(@Param(“taskName”) String taskName, @Param(“startDate”) LocalDate startDate, @Param(“endDate”) LocalDate endDate, @Param(“pageable”) Pageable pageable);復(fù)制代碼

      小結(jié)

      以上列舉了兩種JPA的crud方式,jpa方法與注解方式,平時寫代碼時更傾向于使用注解方式去寫原生sql來實(shí)現(xiàn)業(yè)務(wù)。對于簡單查詢可以用JpaRepository里面這些方法就夠用了,對于更復(fù)雜的場景推薦使用@Query寫sql的方式來實(shí)現(xiàn)。

      jpa方法可以屏蔽底層的sql,如果有不同數(shù)據(jù)庫實(shí)現(xiàn)的服務(wù),用jpa方法可以免于修改sql。但是jpa方法對于分組查詢、limit支持、多條件、多表聯(lián)查這些不太友好。

      小伙伴們有興趣想了解內(nèi)容和更多相關(guān)學(xué)習(xí)資料的請點(diǎn)贊收藏+評論轉(zhuǎn)發(fā)+關(guān)注我,后面會有很多干貨。我有一些面試題、架構(gòu)、設(shè)計類資料可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,需要的話歡迎下載!私信我回復(fù)【666】即可免費(fèi)獲取

      .

      作者:斗笠小熊貓原文出處:https://juejin.cn/post/7106487853126778910

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年6月18日 06:10
      下一篇 2022年6月18日 06:10

      相關(guān)推薦

      • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

        對于微商朋友來說,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營一個朋友圈,有的微商看起來逼格滿滿,實(shí)際效果也不錯;而有的卻動都不動就被屏蔽甚至拉黑…

        2022年11月27日
      • 《寶可夢朱紫》夢特性怎么獲得?隱藏特性獲取方法推薦

        寶可夢朱紫里有很多寶可夢都是擁有夢特性會變強(qiáng)的寶可夢,很多玩家不知道夢特性怎么獲得,下面就給大家?guī)韺毧蓧糁熳想[藏特性獲取方法推薦,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 …

        2022年11月25日
      • 《寶可夢朱紫》奇魯莉安怎么進(jìn)化?奇魯莉安進(jìn)化方法分享

        寶可夢朱紫中的奇魯莉安要怎么進(jìn)化呢?很多玩家都不知道,下面就給大家?guī)韺毧蓧糁熳掀骠斃虬策M(jìn)化方法分享,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 奇魯莉安進(jìn)化方法分享 奇魯莉安…

        2022年11月25日
      • 客服的崗位職責(zé)怎么寫(客服工作內(nèi)容及職責(zé))

        各位小伙伴們大家周一好,又到了每周一給大家分享干貨內(nèi)容的時候啦~ 本期來跟大家分享一下客服工作管理流程以及客服崗位里面的每項職能崗位的核心細(xì)則,也是干貨滿滿推薦收藏~ 一.補(bǔ)償流程…

        2022年11月25日
      • 淘寶直播平臺抽成多少(淘寶直播平臺抽成比例)

        隨著時代的發(fā)展,現(xiàn)在直播帶貨已經(jīng)成為主要帶貨方式,其中淘寶是主流帶貨平臺,不少人在上面直播帶貨賺錢,一些小伙伴也想加入,那么淘寶直播平臺抽成多少?下面小編為大家?guī)硖詫氈辈テ脚_抽成…

        2022年11月24日
      • 白襯衫搭配什么褲子好看,女生襯衫穿法圖片

        說起白襯衫和長褲的搭配組合,不知道大家有沒有發(fā)現(xiàn),雖然是很常見的造型,可不同年齡段慣用的穿搭方式卻不相同,從而也穿出了不同的味道。簡直是現(xiàn)在這個季節(jié),時髦精們的必備造型之一~ 70…

        2022年11月24日
      • 《寶可夢朱紫》暴飛龍怎么抓?暴飛龍獲得方法

        寶可夢朱紫暴飛龍位置在哪?在游戲中,很多玩家還不清楚暴飛龍具體要怎么樣獲得,其實(shí)獲得方法很簡單,暴飛龍直接是沒得抓的,需要玩家從寶貝龍進(jìn)化得到,下面一起來看一下寶可夢朱紫暴飛龍獲得…

        2022年11月23日
      • 《寶可夢朱紫》布土撥怎么進(jìn)化?布土撥進(jìn)化方法介紹

        寶可夢朱紫中,不同的寶可夢有不同的進(jìn)化方法,其中布土撥的進(jìn)化方法是比較特殊的。很多玩家不知道寶可夢朱紫布土撥怎么進(jìn)化,下面就帶來寶可夢朱紫布土撥進(jìn)化方法介紹,一起來看看吧,希望能幫…

        2022年11月23日
      • 《寶可夢朱紫》薄荷怎么獲得?薄荷獲得方法

        寶可夢朱紫中薄荷有改變寶可夢的屬性或性格等效果,很多玩家想知道寶可夢朱紫薄荷怎么獲得,下面就帶來寶可夢朱紫薄荷獲得方法,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 薄荷獲得方法…

        2022年11月23日
      • 《寶可夢朱紫》怎么交換精靈?交換精靈方法一覽

        寶可夢朱紫中玩家可以和好友或者npc進(jìn)行交換寶可夢獲得自己沒有的寶可夢,很多玩家想知道寶可夢朱紫怎么交換精靈,下面就帶來寶可夢朱紫交換精靈方法一覽,感興趣的小伙伴不要錯過,希望能幫…

        2022年11月23日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息