mybatis报Query was Empty异常的问题

目录
  • mybatis报QuerywasEmpty异常
  • mybatis批量更新出现QuerywasEmpty

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>

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

(0)

相关推荐

  • MyBatis常见报错问题及解决方案

    这是一个出错的代码 public interface OrderInfoManageMapper { List<GetOrderInfoManageListReq> selectAllOrder(); void modifyDelivery(int id); void removeOrder(int id); List<GetOrderInfoManageListReq> selectOrderById(@Param("id") Integer id); } 一

  • 关于mybatis resulttype 返回值异常的问题

    mybatis resulttype 返回值异常 在使用mybatis时.resulttype返回自定义的类时,可能返回的类中字段数据存在缺失. 例如:resulttype = "student" 但是当中有些字段为空 原因是因为数据库字段和实体类字段不对应导致的. mybatis底层 查询数据返回会更据数据库的字段和实体类的字段进行匹配,不区分大小写.但是字段不一样就无法传递值 例如:数据库字段为:s_name 实体类字段为 name 处理方式1: 在查询时添加别名 select s

  • Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案

    我们都知道mybatis在进行参数判断的时候,直接可以用<if test=""></if> 就可以了,如下: 1.常规代码 <update id="update" parameterType="com.cq2022.zago.order.entity.Test" > update t_test_l <set > <if test="trnsctWayId != null"

  • mybatis报Query was Empty异常的问题

    目录 mybatis报QuerywasEmpty异常 mybatis批量更新出现QuerywasEmpty mybatis报Query was Empty异常 mybatis中的<foreach>标签在批处理的时候经常要使用到,而使用<foreach>避免不了的就是要对list进行非空判断,否则很容易出错. 今天我在批量插入时,我的代码是这样的 <if test="list!=null and list.size>0>    insert into ta

  • Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 一.问题描述 写好配置文件用JUnit进行测试,一运行就报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiat

  • mybatis报错 resultMapException的解决

    目录 mybatis报错 resultMapException 原因 解决方式 总结mybatis resultmap需要注意的地方 mybatis报错 resultMapException 今天在使用tkmapper时,在复制了实体类之后,新增加了关联查询数据返回的字段,数据库sql使用的详细字段查询,但是此时报错resultMapException,这是因为mybatis中的resultMap 会用无参的构造方法,如果类中加入了新的带参的构造,则需要在类中显式的加入无参的构造,否则会出现异常

  • spring boot启动时mybatis报循环依赖的错误(推荐)

    自己在做项目时,想使用热部署减少部署时间,于是添加了springboot-devtools 在maven中添加了依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 然后正常的启动项目时发现控制台一直在不停的输出错误,错误如图 不明所以,然后就准备去调

  • springboot+mybatis报错找不到实体类的问题

    目录 springboot+mybatis报错找不到实体类 找不到实体类的错误可能有很多,接下来列举几个地方 springboot+mybatis 找不到实体类问题 No qualifying bean of type‘com.wj.bfsh.mapper.SysUserMapper‘ available 问题出现在 springboot+mybatis报错找不到实体类 找不到实体类的错误可能有很多,接下来列举几个地方 启动类位置不对,启动类应该在你的service和dao 的上一层,因为Spr

  • mybatis报错元素内容必须由格式正确的字符数据或标记组成异常的解决办法

    今天同事写一个查询接口的时候,出错:元素内容必须由格式正确的字符数据或标记组成. 错误原因:mybatis查询的时候,需要用到运算符 小于号:< 和大于号: >,在mybatis配置文件里面,这种会被认为是标签,所以解析错误 错误事例: select <include refid="Base_Column_List" /> from t_time_interval where status <> 99 and time_intvl_id >=2

  • Springboot启动报错时实现异常定位

    首先大家了解什么是Spring Boot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架.Spring Boot作为Spring MVC的升级版,但是却没有太多的联系,换句话说你学

  • 解决mybatis使用foreach批量insert异常的问题

    异常 org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version fo

  • 文件路径正确,报java.io.FileNotFoundException异常的原因及解决办法

    新添加个发文类型 insert into mis.zyb_sf_type values('121','榆财法字','榆财法字',2,'0','1',21,NULL,'0','发文模板.doc','') 创建文章时出错了, 异常信息: 文件保存失败 Java.io.FileNotFoundException: E:\tomcat\jinzhongshi\jinzs_yuci\webapps\myDoJZS\word\template_fw\发文模版.doc (系统找不到指定的文件.) at jav

  • mybatis不加@Parm注解报错的解决方案

    我的idea版本2017.3.4,低版本貌似不会加上这个配置,idea高版本会 补充知识:Mybatis传多个参数的问题 及MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1 问题 对于使用Mybatis ,传多个参数,我们可以使用对象封装外,还可以直接传递参数 对象的封装,例如查询对象条件basequery对象 <select id="getProductByProductQuer

随机推荐