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

SpringDataJpa如何使用union多表分頁條件查詢

 更新時間:2022年02月23日 15:06:51   作者:Hyz..  
這篇文章主要介紹了SpringDataJpa如何使用union多表分頁條件查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

如何使用union多表分頁條件查詢

當(dāng)前項目有一個全局搜索的功能,需要涉及到7-8張主表,由于當(dāng)前項目使用的是Jpa,所以我決定使用原生sql的方式使用union來進(jìn)行查詢,由于對這個框架的不熟悉,被坑了很久,特此記錄。

條件

1、在參數(shù)列表中,使用@Param注解(例:@Param(“userId”) Long userId)

2、在sql中應(yīng)該以 :userId 的方式來注入?yún)?shù)(例:person.user_id = :userId),或者用?1 ?2根據(jù)參數(shù)的順序來注入也可以,我采用的是第一種

3、sql應(yīng)該是寫在@Query的value中,并且設(shè)置 nativeQuery = true

4、如果要設(shè)置一個可能為空的值,比如:有一個分類,需要當(dāng)作條件查詢,但是這個值是可能為空的,所以需要在sql中判斷,如果為空就不進(jìn)行篩選。語法其實和在sql中判斷是一樣的

where IF(:category is not null,a.category = :category is not null,1=1)

分頁

1、分頁必須加countQuery這個參數(shù),把上面sql價格count就可以

2、傳入Pageable,不要傳sort,不然會報錯,暫時沒找到解決方案

例如 select * from a 為你的sql

那么分頁應(yīng)該是

select * from (select * from a) b order by ?#{#pageable}

order by在countQuery里面就不用加了哦

3、返回的是Page<Object[]>,里面content封裝的順序就是你sql查出來的順序

踩過的坑

1、多表union查詢,查詢的字段應(yīng)該是一樣的,比如第一張user表查詢id,name,sex、第二張address表也必須查詢id,name,sex,如果沒有這個字段則自己封裝返回固定的值,可以為空字符串

2、傳入pageable的時候 ?#{#pageable} 必須這樣寫

分享幾個用到的mysql語法

1、判斷是否為空,不為空查詢時間在傳入時間之間的數(shù)據(jù)

IF(:startTime is not null and :endTime is not null,proc.create_time between :startTime and :endTime,1=1)

這邊我在service是判斷了結(jié)束時間是否為空的,如果結(jié)束時間為空,開始時間不為空默認(rèn)查詢一年的數(shù)據(jù)

2、根據(jù)名稱模糊查詢

proc.content LIKE CONCAT('%',:content,'%')

3、最后根據(jù)查出來的總數(shù)據(jù)對類型篩選

IF(:category is not null,a.category = :category is not null,1=1)

小結(jié)一下:

1、其實很簡單的分頁條件查詢,因為不熟悉jpa的語法,導(dǎo)致浪費了很多時間,希望可以幫到更多的人。

2、暫時不知道怎么排序,無論是在pageable中傳入sort,還是在sql最后進(jìn)行排序都會報錯,如果有大佬知道的話可以點撥一下。

jpa執(zhí)行原生sql union bug解決

@Query(value = "SELECT * FROM count_entity where id=-1111 union (SELECT * FROM count_entity where video_name = ?1 AND platform ='騰訊視頻' ORDER BY click_date DESC LIMIT ?2)"
?+ "UNION"
?+ "(SELECT * FROM count_entity where video_name = ?1 AND platform ='愛奇藝' ORDER BY click_date DESC LIMIT ?2)"
?+ "UNION"
?+ "(SELECT * FROM count_entity where video_name = ?1 AND platform ='芒果TV' ORDER BY click_date DESC LIMIT ?2)", nativeQuery = true)

union前面需要連接一個空數(shù)據(jù)查詢,因為union 第一個查詢不能用()

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中isAssignableFrom的用法詳解

    Java中isAssignableFrom的用法詳解

    下面小編就為大家?guī)硪黄狫ava中isAssignableFrom的用法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

    SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • java調(diào)用python代碼的兩種實現(xiàn)方式:Runtime.exec()和Jython

    java調(diào)用python代碼的兩種實現(xiàn)方式:Runtime.exec()和Jython

    在Java中調(diào)用Python代碼有多種方法,包括使用Runtime.exec()和第三方庫如Jython,Runtime.exec()通過系統(tǒng)命令執(zhí)行Python腳本,適用于簡單的調(diào)用場景,Jython則是一個Python的Java實現(xiàn),允許在Java中直接運行Python代碼,適用于更深層次的集成需求
    2025-01-01
  • Java即將引入新對象類型來解決內(nèi)存使用問題

    Java即將引入新對象類型來解決內(nèi)存使用問題

    這篇文章主要介紹了Java即將引入新對象類型來解決內(nèi)存使用問題,文章通過圍繞主題的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • B/S與C/S架構(gòu)的區(qū)別介紹

    B/S與C/S架構(gòu)的區(qū)別介紹

    本文詳細(xì)講解了B/S與C/S架構(gòu)的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Java中YYYY-MM-dd與yyyy-MM-dd的區(qū)別及跨年問題

    Java中YYYY-MM-dd與yyyy-MM-dd的區(qū)別及跨年問題

    YYYY-MM-dd可能會導(dǎo)致跨年周的日期被歸屬到錯誤的年份, yyyy-MM-dd總是表示實際的日歷年份,無論日期所在的周是否跨年,本文就來介紹一下兩者的區(qū)別,感興趣的可以了解一下
    2024-01-01
  • Java?Map的compute方法舉例詳解

    Java?Map的compute方法舉例詳解

    Java中的Map是一種用于存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),它提供了一系列的方法來操作和訪問其中的元素,下面這篇文章主要給大家介紹了關(guān)于Java?Map的compute方法舉例詳解的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • Java多線程 Callable、Future 和FutureTask

    Java多線程 Callable、Future 和FutureTask

    這篇文章主要介紹Java多線程中的 Callable、Future 以及FutureTask,下面文章圍繞Java多線程的相關(guān)資料展開全文詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • 在controller中如何設(shè)置接收參數(shù)的默認(rèn)值

    在controller中如何設(shè)置接收參數(shù)的默認(rèn)值

    這篇文章主要介紹了在controller中如何設(shè)置接收參數(shù)的默認(rèn)值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • DispatcherServlet處理器的適配和處理解析

    DispatcherServlet處理器的適配和處理解析

    這篇文章主要為大家介紹了DispatcherServlet的處理器的適配和處理流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評論

璧山县| 高要市| 利辛县| 定日县| 长泰县| 桐庐县| 德庆县| 安阳县| 蒲江县| 渝北区| 会宁县| 大安市| 盱眙县| 彭水| 泊头市| 呼和浩特市| 西宁市| 霍林郭勒市| 舒城县| 万全县| 镇安县| 筠连县| 广汉市| 中方县| 平原县| 东台市| 定安县| 广州市| 仙游县| 乌拉特后旗| 八宿县| 民权县| 寿阳县| 大渡口区| 清苑县| 包头市| 兴国县| 巴南区| 通渭县| 阳城县| 龙岩市|