亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis中一條SQL使用兩個foreach的問題及解決

 更新時間:2022年02月08日 10:15:00   作者:坑貨行不行  
這篇文章主要介紹了Mybatis中一條SQL使用兩個foreach的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一條SQL使用兩個foreach的問題

未修改前的 SQL 語句

<select id="findQuestionType_3_correct" resultType="map">
    SELECT q.`id`, q.`questionContent`, GROUP_CONCAT(o.`questionOption`) AS questionOptionList 
    FROM `exam_question` q
    INNER JOIN `exam_question_option` o ON q.`id` = o.`questionId` 
    WHERE q.`id` IN 
        <foreach item="ids_1" collection="array" open="(" separator="," close=")" >
            #{ids_1}
        </foreach> 
        AND q.`questionType` = 3 AND o.`correct` = 1 
    GROUP BY FIELD(q.`id`, 
        <foreach item="ids_2" collection="array" separator="," >
            #{ids_2}
        </foreach> 
    )
</select>

這里注意一個點,我兩個 foreach 的 collection 參數都是:array;

這在只有一個 foreach 的情況下,代碼是能跑通的,沒錯我后臺給的參數是一個 int[];

因為業(yè)務需求,我又加了一個 foreach,同樣, collection 參數給的還是:array;

但是,運行時代碼就報錯了,

報錯如下

???啥情況,四個參數???我只給了兩個參數?。。縎QL 兩個參數,Dao 層我也沒給 4 個啊

這個 array 參數是個什么鬼?

最后,差不多邊查邊改了兩個多小時,發(fā)現問題;

將 foreach 的 collection 參數值分別改為對應的 ids_1 和 ids_2,即可;

代碼如下:

<select id="findQuestionType_3_correct" resultType="map">
    SELECT q.`id`, q.`questionContent`, GROUP_CONCAT(o.`questionOption`) AS questionOptionList 
    FROM `exam_question` q 
    INNER JOIN `exam_question_option` o ON q.`id` = o.`questionId` 
    WHERE q.`id` IN 
        <foreach item="ids_1" collection="ids_1" open="(" separator="," close=")" >
            #{ids_1}
        </foreach> 
        AND q.`questionType` = 3 AND o.`correct` = 1 
    GROUP BY FIELD(q.`id`, 
        <foreach item="ids_2" collection="ids_2" separator="," >
            #{ids_2}
        </foreach> 
    )
</select>

跑是跑通了,但是這樣只是 知其然不知其所以然,于是我在網上查閱了下資料,果然:

當查詢有多個參數時,foreach 的 collection 屬性可以指定名稱;

查閱文章為:Mybatis List列表In查詢實現的注意事項

foreach執(zhí)行多條sql報錯的解決

今天在用mybatis執(zhí)行foreach更新操作時報了奇怪的錯誤.sql語句是沒有任何問題的.sql拿出來直接能運行.但是mybatis就是不能運行.

而我傳遞一條數據的話mybatis能運行,但是兩條以上數據就會報錯

后來發(fā)現是mysql不支持執(zhí)行多條sql語句.為此需要再數據源后面加上一句話.就可以執(zhí)行多條sql了

&allowMultiQueries=true

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

相關文章

  • Java文本編輯器實現方法詳解

    Java文本編輯器實現方法詳解

    這篇文章主要介紹了Java文本編輯器實現方法,結合實例形式詳細分析了java文本編輯器結構、原理、布局、實現步驟與相關操作技巧,需要的朋友可以參考下
    2019-03-03
  • SpringBoot集成redis實現分布式鎖的示例代碼

    SpringBoot集成redis實現分布式鎖的示例代碼

    這篇文章主要介紹了SpringBoot集成redis實現分布式鎖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java中四種9*9乘法表的實現方式(附代碼)

    Java中四種9*9乘法表的實現方式(附代碼)

    這篇文章主要介紹了Java中四種9*9乘法表的實現方式(附代碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Spring通過配置文件和注解實現屬性賦值

    Spring通過配置文件和注解實現屬性賦值

    這篇文章主要介紹了Spring通過配置文件和注解實現屬性賦值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot整合FTP實現文件傳輸的步驟

    SpringBoot整合FTP實現文件傳輸的步驟

    這篇文章主要給大家介紹了SpringBoot整合FTP實現文件傳輸的步驟,文中的流程步驟和代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • java中如何判斷對象是否是垃圾

    java中如何判斷對象是否是垃圾

    這篇文章主要介紹了java中如何判斷對象是否是垃圾,Java有兩種算法判斷對象是否是垃圾:引用計數算法和可達性分析算法,需要的朋友可以參考下
    2023-04-04
  • Java 駝峰命名法詳解(必看篇)

    Java 駝峰命名法詳解(必看篇)

    下面小編就為大家?guī)硪黄狫ava 駝峰命名法詳解(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java獲取文件路徑常用方法解析

    Java獲取文件路徑常用方法解析

    這篇文章主要介紹了Java獲取文件路徑常用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • elasticsearch聚合查詢實踐示例

    elasticsearch聚合查詢實踐示例

    這篇文章主要為大家介紹了elasticsearch聚合查詢實踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 如何在IDEA中對 hashCode()和 equals() 利用快捷鍵快速進行方法重寫

    如何在IDEA中對 hashCode()和 equals() 利用快捷鍵快速進行方法重寫

    這篇文章主要介紹了如何在IDEA中對 hashCode()和 equals() 利用快捷鍵快速進行方法重寫,需要的朋友可以參考下
    2020-08-08

最新評論