MyBatis 3 批量插入多条数据

在实际的开发,当我们需要插入多条数据时,大家很多是通过在程序中循环调用添加接口。
这种方式完全可以实现,只是在性能上有很大的损失;

可以通过下面这种方式:
   针对PostgreSQL 9.0数据库
<insert id="addNormalPlan" parameterType="list" > 
<selectKey keyProperty="id" resultType="int" order="BEFORE"> 
            select max(id)+1 from TBL_NORMAL_PLAN 
</selectKey> 
<![CDATA[ INSERT INTO TBL_NORMAL_PLAN( id, plan_type, 
week_type, start_time,end_time) VALUES ]]> 
    <foreach collection="list" item="item" index="index"  
        separator=",">  
        <![CDATA[ (#{id}, #{item.planType}, #{item.weekType},  
        #{item.startTime}, #{item.endTime} ) ]]> 
    </foreach> 
</insert> 

list:是个对象集合,id:这里不是主键,取的最大值,可以换成主键。
这个foreach其实就是组织成insert into values(多行的值)
 
 
    针对oracle的批量添加:
<insert id="addHomeworkListInfo" parameterType="list">
        INSERT INTO homework_list
        (homework_list_id,
        homework_id,
        count,
        type,
        content) SELECT SEQ_HOMEWORK_LIST_ID.NEXTVAL, A.* FROM(
        <foreach collection="homeworkListInfo" item="item" index="index"
            separator="union all">
            SELECT
            #{item.homeworkId},
            #{item.count},
            #{item.type},
            #{item.content}
            FROM dual
        </foreach>
        ) A
    </insert>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值