本文主要描述 使用mybatis进行批量更新、批量插入 过程中遇到的异常及总结:

首先贴出使用批量操作报的异常信息:

 java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:365)

最终查到导致异常的原因是 foreach中的属性字段名字写错了!表字段太多,一个个找的还是很费劲的!建议这种做好单元测试!

另外,写xml的时差错,还可以从下面几点检查。

1、parameterType="Java.util.List",这个parameterType有没有写错;

2、<foreach collection="list" item="item" index="index" open="" close="" separator=";">这行中,collection是不是List

关于批量更新做一个总结:

批量更新有两种,一种是通过id更新很多字段,第二种是更改一列,值是固定的这种。下面分别贴出列子

例子:

更新一列:

 <update id="batchUpdateResult" parameterType="java.util.List">
update
<include refid="input_invoice_original_record" />
set isGet = 0 where invoiceNum in
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>

这种直接是item就行,只是一个查询的条件范围。

更新很多字段:

 <update id="batchUpdate" parameterType="list">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update
<include refid="input_invoice_original_record" />
<trim prefix="SET" suffixOverrides=",">
<if test="item.title != null">
title = #{item.title},
</if>
<if test="item.invoiceNum != null">
invoiceNum = #{item.invoiceNum},
</if>
<if test="item.invoiceCode != null">
invoiceCode = #{item.invoiceCode},
</if>
<if test="item.invoiceDate != null">
invoiceDate = #{item.invoiceDate},
</if> </trim>
WHERE id = #{item.id}
</foreach>
</update>

注意,这种传的是一个个的对象在list集合中,要加item.属性名称,空判断的时候别忘记这种格式,这里我犯过错,没少费时间。

贴出来当时忘记加item的异常 信息:

 java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'title' not found. Available parameters are [list]
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'title' not found. Available parameters are [list]
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:365)

找这个问题用了不少时间!

下面说一下批量插入操作。

       <insert id="batchInsert" parameterType="java.util.List"
useGeneratedKeys="true" keyProperty="id">
<selectKey resultType="long" keyProperty="id" order="AFTER">
SELECT
LAST_INSERT_ID()
</selectKey>
INSERT INTO
<include refid="input_invoice_original_record" />
(
title ,
invoiceNum,
invoiceCode,
invoiceDate,
sellDate ,
invoiceCategory
)
VALUES
<foreach collection="list" item="item" index="index"
separator=",">
(
#{item.title} ,
#{item.invoiceNum},
#{item.invoiceCode},
#{item.invoiceDate},
#{item.sellDate} ,
#{item.invoiceCategory}
)
</foreach>
</insert>

易错点和批量更新一样,写的时候要仔细。

这里做一个总结,如果不正确之处,欢迎指正!

解决使用mybatis做批量操作时发生的异常:Parameter '__frch_item_0' not found. Available parameters are [list] 记录的更多相关文章

  1. 使用DBCP时发生AbstractMethodError异常

    使用DBCP时发生AbstractMethodError异常,错误描述: Exception in thread "main" java.lang.AbstractMethodEr ...

  2. SQL2008、SQL2013 执行Transact-SQL 语句或者批处理时发生了异常。错误5120

    附加数据库的时候遇到问题,问题描述如下: 附加数据库 对于 服务器"服务器名"失败.(Microsoft.SqlServer.Smo) 执行Transact-SQL 语句或者批处理 ...

  3. mybatis 批量更新 Parameter '__frch_item_0' not found. Available parameters are [list]

    一次在做批量更新数据的时候报错 Parameter '__frch_item_0' not found. Available parameters are [list] 记过反复查找,最后才发现是一个 ...

  4. 解决Parameter '__frch_item_0' not found. Available parameters 问题

    1. 问题描述: 出现如下问题,执行报错信息 Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org ...

  5. mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]

    当在mybatis用到foreach的时候,会报这个错误Parameter '__frch_item_0' not found. Available parameters are [list]会出现的 ...

  6. 记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程

    描述:某次更新程序,需要给测试员MM测试,之前都是正常的,更新后给MM测试就报异常System.Net.WebException 基础连接已经关闭:接收时发生错误 -------> System ...

  7. 解决win7远程桌面连接时发生身份验证错误的方法

    远程桌面连接,是我们比较常用的一个功能了,但有时突然不能用了,以下是我遇到该问题,并解决该问题的方法.连接时报的是“发生身份验证错误,要求的函数不受支持”,解决之后细想一下,该问题好像是在我在电脑上安 ...

  8. 解决WCF跨机器调用时发生“调用方未由服务进行身份验证”的错误

    1.服务器端Web.config配置文件,增加如下部分: <system.serviceModel> <bindings> <wsHttpBinding> < ...

  9. [转]ArcGIS for Silverlight:关于尝试连接到REST端点时发生安全异常的解决方案

    Silverlight跨域策略: 要从远程服务器访问数据,远程服务器需要在 web 服务器的根目录下放置一个 clientaccesspolicy.xml 文件(例如 c:\inetpub\wwwro ...

随机推荐

  1. 收藏以下linux查看系统信息的命令

    # uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# hostname              ...

  2. C# Color颜色对照表

    Color命名空间  using System.Drawing; Color.AliceBlue 240,248,255 Color.LightSalmon 255,160,122 Color.Ant ...

  3. Linux下快速安装Mysql及使用

    1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包: yum list mysql* 安装mysql客户端: ...

  4. Android自动滚动 轮播循环的ViewPager

    主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用.顺便解决ViewPager嵌套(ViewPager inside ViewPager)影响触摸滑动及ViewPager滑动速度设置问题 ...

  5. mysql索引类型normal,unique,full text

    normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索引. FULL ...

  6. ck-reset css(2016/5/13)

    /**rest by 2016/05/04 */ * {box-sizing: border-box;} *:before,*:after {box-sizing: border-box;} body ...

  7. PHP网站常见安全漏洞 及相应防范措施总结

    一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍. 1.se ...

  8. mybatis前台传来一个String,后后台执行sql变成了true

    实际上参数传来的是一个字符串 3 ,不知道为什么会变成true 最后当然是查不到信息了.. 我在mapper映射文件里面使用了动态的where查询,我觉得跟这个关系不太大, 现在不知道怎么办,希望有思 ...

  9. linux查看磁盘挂载的三种方法

    第一种方法:使用df命令,例如: orientalson:/home # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda ...

  10. implode 函数 把数组拼接成字符串

    $array( '0'=>1, '1'=>5, '2'=>5 ); $str=imploade(',',$array); echo str;//输出1,5,3