当前位置: 首页 > 知识库问答 >
问题:

MyBatis@foreach更新问题

许焕
2023-03-14

我用myBatis。Single record语句工作正常,但当我尝试使用foreach执行记录列表的更新时,出现了一个关于映射的错误,这有点奇怪,因为它对Single record工作正常。

@Update("UPDATE table SET field_one=#{input.fieldOne} WHERE field_two =#{input. fieldTwo}")
    public void updateDomain(@Param("input") ObjectList input);

@Update({"<script>",
        "<foreach item='item' index='index' collection='input' separator=','>",
        "UPDATE table",
        "SET field_one = '#{item.fieldOne}'",
        "WHERE field_two = '#{item.fieldTwo}'", 
        "</foreach> ",
        "</script>"})
public void updateDomains(@Param("input") List<ObjectList> input);

下面是我得到的错误:

原因:org。阿帕奇。伊巴蒂斯。类型TypeException:无法为映射设置参数:ParameterMapping{property=''frch\u item_0.fieldOne',mode=IN,javaType=class java.lang.String,jdbcType=null,numericScale=null,resultMapId='null',jdbcTypeName='null',expression='null'}。原因:组织。阿帕奇。伊巴蒂斯。类型TypeException:将参数#1设置为非null时出错,JdbcType为null。尝试为此参数设置其他JdbcType或其他配置属性。原因:java。sql。SQLException:参数索引超出范围(1)

共有1个答案

弘兴言
2023-03-14

实际上,这是泰欧波应该做的;而不是,用于分隔符。这是一个可行的例子。

@Update({ "<script>",
            "<foreach item='item' index='index' collection='collectionToUpdate' separator=';'>",
            "UPDATE domains",
            "SET columnOne =  #{item.valueOne} WHERE columnTwo = #{item.valueTwo}", 
            "</foreach> ",
            "</script>"})
 类似资料:
  • 1. 前言 在 MyBatis 中,常常会遇到集合类型的参数,虽然我们可以通过 OGNL 表达式来访问集合的某一个元素,但是 OGNL 表达式无法遍历集合。foreach 标签就是专门用来解决这类问题的,本小节我们就来一起学习它。 2. 定义 慕课解释:foreach 标签用来遍历数组、列表和 Map 等集合参数,常与 in 关键字搭配使用。 3. 实例 我们以 3 个例子来看一看 foreach

  • 本文向大家介绍Mybatis批量更新报错问题,包括了Mybatis批量更新报错问题的使用技巧和注意事项,需要的朋友参考一下 下面给大家介绍mybatis批量更新报错问题, 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybatis批量更新操作如下   下面看下Mybatis批量更新数据的方式   第一种方式 但是这种方式修改的字段值都是一样的。 第

  • 主要内容:示例前面我们学习了如何使用 Mybatis  if、 where、 trim 等动态语句来处理一些简单的查询操作。对于一些 SQL 语句中含有 in 条件,需要迭代条件集合来生成的情况,可以使用 foreach 来实现 SQL 条件的迭代。  Mybatis foreach 标签用于循环语句,它很好的支持了数据和 List、set 接口的集合,并对此提供遍历的功能。语法格式如下。 foreach 标签

  • 本文向大家介绍详解mybatis foreach collection示例,包括了详解mybatis foreach collection示例的使用技巧和注意事项,需要的朋友参考一下 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了foreach功能,该功能比较强大,它允许你指定一个集合,声明集合项和索引变量,它们可以用在元素体内。它也允许你指定开放和关闭的字

  • 客户表中的余额分为:储值余额和盈利余额 要求下单时订单金额优先从储值余额中扣除,其次盈利余额扣除 扣除储值余额,如返回的balance小于0为待扣除金额,说明还需要扣除盈利余额: <update id="deductBalance" parameterType="com.pay.business.domain.CustomDO" > <!-- BEFORE:更新语句执行前执行selectKe

  • 我使用mybatis在映射器接口中有一个更新查询