mybatis报Query was Empty异常的问题

 更新时间:2022年03月10日 09:53:41   作者:虎哥和你一起学编程  
这篇文章主要介绍了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>

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

相关文章

  • Java如何替换RequestBody和RequestParam参数的属性

    Java如何替换RequestBody和RequestParam参数的属性

    近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果,所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter去实现,这篇文章主要介绍了Java替换RequestBody和RequestParam参数的属性,需要的朋友可以参考下
    2023-10-10
  • Java SSL与TLS客户端证书配置方式

    Java SSL与TLS客户端证书配置方式

    这篇文章主要介绍了Java SSL与TLS客户端证书配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MyBatis实现注册及获取Mapper

    MyBatis实现注册及获取Mapper

    本文主要介绍了MyBatis实现注册及获取Mapper,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • mybatis createcriteria和or的区别说明

    mybatis createcriteria和or的区别说明

    这篇文章主要介绍了mybatis createcriteria和or的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java并发使用CountDownLatch在生产环境翻车剖析

    java并发使用CountDownLatch在生产环境翻车剖析

    这篇文章主要为大家介绍了java并发使用CountDownLatch在生产环境翻车的示例剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java数组,去掉重复值、增加、删除数组元素的实现方法

    Java数组,去掉重复值、增加、删除数组元素的实现方法

    下面小编就为大家带来一篇Java数组,去掉重复值、增加、删除数组元素的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Mybatis中updateBatch实现批量更新

    Mybatis中updateBatch实现批量更新

    本文主要介绍了Mybatis中updateBatch实现批量更新,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Springmvc项目web.xml中servlet-mapping路径映射配置注意说明

    Springmvc项目web.xml中servlet-mapping路径映射配置注意说明

    这篇文章主要介绍了Springmvc项目web.xml中servlet-mapping路径映射配置注意说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SpringBoot的Security和OAuth2的使用示例小结

    SpringBoot的Security和OAuth2的使用示例小结

    这篇文章主要介绍了SpringBoot的Security和OAuth2的使用,本文通过示例图文相结合给大家讲解的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • SpringBoot Devtools实现项目热部署的方法示例

    SpringBoot Devtools实现项目热部署的方法示例

    这篇文章主要介绍了SpringBoot Devtools实现项目热部署的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01

最新评论