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。
推薦閱讀:
- mybatis update更新字段的使用操作
- MyBatis批量插入/修改/刪除MySql數據
- MyBatis傳入參數為List對象的實現
- Mybatis動態SQL foreach批量操作方法
- 基於mybatis 動態SQL查詢總結