ibatis批量增加

    先吐槽一下csdn,博客写到一半居然卡死了,还没有保存,又得重新码字(微笑脸)。
    这篇博客提供一个详细的批量插入例子和记录自己踩过的坑。刚开始使用mybatis不久,写的不对的地方还望大佬指正。
  ibatis的单条插入操作这里不做累述,网上教程还是很多的,对于批量操作网上很多的教程是mybatis,没有办法公司还是用的ibatis(我有什么办法我也很无赖),ibatis里面是不支持foreach的,但是还好提供了iterate。
<insert id="savePersonalCallOutTaskInfo" parameterClass="java.util.List" >
       insert into t_task_manage_info ( assigner_id, allocate_count, execute_count,
                    dial_count, callout_task_id, begin_time, end_time, account) values
        <iterate conjunction="," >
            (
            #list[].assignerId#,
            #list[].allocateCount#,
            #list[].executeCount#,
            #list[].dialCount#,
            #list[].calloutTaskId#,
            #list[].beginTime#,
            #list[].endTime#,
            #list[].account#
            )
        </iterate>

    </insert>
这是一个很详细的例子,如果大家第一次尝试可以仿照。

我踩过的坑:
1.<iterate property> 如果你传入的参数是List,那么property属性是不用写(网上很多人说这是必填,坑爹啊),否则会报以下错误
Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.StringIndexOutOfBoundsException: String index out of range: -1
是的你没有看错,越界问题。这里我也不清楚为什么会报这个错,还望大佬赐教。这个属性的作用在于你传参为Map的时候用。

2.<iterate open="(" close=")"> open和close分别是循环开始和结束的符号,这里加入的sql语句明显有错误,由于楼主手生第一次写加了以后报一下错误
Cause: java.sql.SQLException: Column count doesn't match value count at row 1
参数不匹配,刚开始还以为是自己少写参数或者少传参数了。去网上找了会,发现是自己对于open和close的意思误解了。

3.还有一点需要注意就是入参是需要判断是否为null的。这个问题我没遇到过,但是前辈特别交代过所以还是提一下吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值