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

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

下面给大家提供一个实例:

xml:这里说明一下这个sql的意思是根据h_code去更新h_clientA的值

<update id="updateHards" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
            update hard
            <set>
                <if test="item.h_clientA !=null">
                    h_clientA = #{item.h_clientA,jdbcType=VARCHAR}
                </if>
                <if test="item.h_clientB !=null">
                    h_clientB = #{item.h_clientB,jdbcType=VARCHAR}
                </if>
                <if test="item.h_clientC !=null">
                    h_clientC = #{item.h_clientC,jdbcType=VARCHAR}
                </if>
            </set>
            where h_code = #{item.hCode,jdbcType=VARCHAR}
        </foreach>
    </update>

dao:

int updateHards(List<Hard> list);

controller:

List<Hard> hards = new ArrayList<Hard>();
for (int i = 0; i < split.length; i++) {
            Hard hard = new Hard();
            switch (client.getClient_level()) {
                case 2:
                    hard.setH_clientB(h_client);
                    break;
                case 3:
                    hard.setH_clientC(h_client);
                    break;
    }

   hard.sethCode(split[i]);
   hards.add(hard);
 }
 // 3.进行操作,并返回

 int updateHards = hardManageService.updateHards(hards);

相关的错误信息:

1.查看parameterType的类型是不是java.util.List类型,如果是的话,看foreach 的collection属性是不是list,

因为 传递一个 List 实例或者数组作为参数对象传给 MyBatis,MyBatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键 

2.看一下foreach里面的值有没有传递进来 

3.看foreach里面的名称字段是否写错 

4.还有就是我用Mybatis的时候,用mysql的值插入自动增长值,里面的key我在数据库中没有设置自动增长,然后我又用了selectkey,所以也会出现这种情况

如有需要可以加我Q群【308742428】大家一起讨论技术。

后面会不定时为大家更新文章,敬请期待。

喜欢的朋友可以关注下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值