mybatis報Query was Empty異常的問題

mybatis報Query was Empty異常

mybatis中的<foreach>標簽在批處理的時候經常要使用到,而使用<foreach>避免不瞭的就是要對list進行非空判斷,否則很容易出錯。

今天我在批量插入時,我的代碼是這樣的

<if test="list!=null and list.size>0>
   insert into tables
   values
   <foreach item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>

本以為在外面加上判斷就可以啦,但是運行時就拋出瞭這個異常:Query was Empty這個異常,那麼這個異常是怎麼來的呢,其實就是List為空時,經過<if>標簽的判斷,從而使的這個<insert>標簽裡面沒有內容,所以就導致瞭這個異常:Query was Empty。

我總覺得這個東西應該是Mybatis的缺陷,怎麼每次都要對這個list進行判斷,而且感覺判斷起來還很麻煩,希望以後對foreach標簽會支持更好一些,用起來更爽一些。

mybatis批量更新出現Query was Empty

自己在檢查其他情況無誤的情況下,後臺還是給我報錯“query was empty”,從字面 意思就是“查詢為空”,這裡表達的不準確,這裡是因為你的傳入的list集合是空集合,而不是查詢結果為空而引發的異常,所以我們需要對集合進行判斷是否傳入的是有參數的集合,以免讓mybatis直接拋出一大串不友好的異常,這裡記錄一下。

    <update id="updateFeeAndCharge" parameterType="java.util.List">
        <foreach collection="list" item="items" separator =";">
            update item set
            enroll1=#{items.enroll1},
            enroll1=#{items.enroll2},
            business1=#{items.business1},
            business2=#{items.business2}
            where id=#{items.id}
        </foreach>
    </update>

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。 

推薦閱讀: