解决使用mybatis做批量操作时发生的异常:Parameter '__frch_item_0' not found. Available parameters are [list] 记录
2017-03-13 20:42
976 查看
本文主要描述 使用mybatis进行批量更新、批量插入 过程中遇到的异常及总结:
首先贴出使用批量操作报的异常信息:
最终查到导致异常的原因是 foreach中的属性字段名字写错了!表字段太多,一个个找的还是很费劲的!建议这种做好单元测试!
另外,写xml的时差错,还可以从下面几点检查。
1、parameterType="Java.util.List",这个parameterType有没有写错;
2、<foreach collection="list" item="item" index="index" open="" close="" separator=";">这行中,collection是不是List
关于批量更新做一个总结:
批量更新有两种,一种是通过id更新很多字段,第二种是更改一列,值是固定的这种。下面分别贴出列子
例子:
更新一列:
这种直接是item就行,只是一个查询的条件范围。
更新很多字段:
注意,这种传的是一个个的对象在list集合中,要加item.属性名称,空判断的时候别忘记这种格式,这里我犯过错,没少费时间。
贴出来当时忘记加item的异常 信息:
找这个问题用了不少时间!
下面说一下批量插入操作。
易错点和批量更新一样,写的时候要仔细。
这里做一个总结,如果不正确之处,欢迎指正!
首先贴出使用批量操作报的异常信息:
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]
- mybatis 批量增加 报异常 Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]
- MyBatis批量操作报错:Parameter 'xxxList' not found. Available parameters are [list]
- mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [lis
- 当在mybatis用到foreach的时候,会报这个错误Parameter '__frch_item_0' not found. Available parameters are [list]会出现的
- 解决Parameter '__frch_item_0' not found. Available parameters are [list]
- Parameter '__frch_item_0' not found. Available parameters are [list]
- MyBatis批量操作报错:Parameter 'xxxList' not found. Available parameters are [list]
- Parameter '__frch_item_0' not found. Available parameters are [list]
- mybatis批量插入函数报“Parameter '__frch_item_0' not found. Available parameters are [list]”错误
- Parameter '__frch_item_0' not found. Available parameters are [list]问题
- Parameter '__frch_item_0' notfound. Available parameters are [list]
- MyBatis批量操作报错:Parameter 'xxxList' not found. Available parameters are [list]
- Parameter '__frch_item_0' not found. Available parameters are [list]