Mybatis批量更新SQL報錯☞解決辦法

appleyk發表於2018-08-31

 

 

批量更新語句(XML對映)如下:

 

 <!--批量更新使用者表資料-->
    <update id ="updateBatch" parameterType="java.util.List">

        <foreach collection ="users" item="user" index= "index" close=";" separator =";">
            update user
            <set>
                name = #{user.name}
            </set>
            <where>
                 id =#{user.id}
            </where>
        </foreach>
    </update>

 

 

Insomnia測試介面【測了兩條資料】,結果報錯:

 

 

 

 

後臺檢視異常資訊如下:

 

 

 

 

更奇怪的是,批量操作一條資料是OK的:

 

 

 

 

  哪裡有問題呢?

 

 

  原來,Mybatis對映檔案中的sql語句預設是不支援以" ; " 結尾的,也就是不支援多條sql語句的執行

 

 

 

 

但是在SQL編輯器中執行多條sql語句的時候是可以以分號結尾的,如:

 

 

 

 

 

解決辦法:

 

 

在application.properties配置文中的資料來源url後面新增一個引數

 

 &allowMultiQueries=true   【允許sql語句中有多個insert或者update語句 == 支援sql批量操作】

 

原來的:

 

#注意SpringBoot2.0 這裡的資料來源url是: jdbc-url 而不是 url
spring.datasource.jdbc-url=jdbc\:mysql\://localhost\:3306/slave?useUnicode\=true&autoReconnect=true&useSSL=false&characterEncoding\=utf-8&useSSL=true

 

 

現在的:

 

#注意SpringBoot2.0 這裡的資料來源url是: jdbc-url 而不是 url
spring.datasource.jdbc-url=jdbc\:mysql\://localhost\:3306/slave?useUnicode\=true&autoReconnect=true&useSSL=false&characterEncoding\=utf-8&useSSL=true&allowMultiQueries=true

 

 

重啟專案後,測試:

 

 

 

 

相關文章