好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mybatis报Query was Empty异常的问题

mybatis报Query was Empty异常

mybatis中的<foreach>标签在批处理的时候经常要使用到,而使用<foreach>避免不了的就是要对list进行非空判断,否则很容易出错。

今天我在批量插入时,我的代码是这样的

?

1

2

3

4

5

6

7

< 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直接抛出一大串不友好的异常,这里记录一下。

?

1

2

3

4

5

6

7

8

9

10

    < 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 >

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。 

原文链接:https://blog.csdn.net/weixin_41751625/article/details/79465160

查看更多关于mybatis报Query was Empty异常的问题的详细内容...

  阅读:16次