mybatis批量插入 数据

批量插入sql语句:

INSERT INTO table (field1,field2,field3) VALUES (‘a’,”b”,”c”), (‘a’,”b”,”c”),(‘a’,”b”,”c”)

mybatis通过foreach循环拼装了如上的sql语句。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
    namespace="com.xxx.mapper.XXXRecordMapper">
    <resultMap id="BaseResultMap" type="com.xxx.model.XXXRecord">
        <id column="AutoId" property="autoid" jdbcType="BIGINT" />
        <result column="UserId" property="userid" jdbcType="BIGINT" />
        <result column="NoticedTime" property="noticedtime" jdbcType="TIMESTAMP" />
    </resultMap>
    <sql id="Base_Column_List">
        AutoId, UserId, NoticedTime
    </sql>
    <!-- myself:批量插入 -->
    <insert id="insertBatch" parameterType="java.util.List">
        insert into T_XXXRecord (AutoId, UserId, NoticedTime) values
        <foreach collection="list" item="item" index="index" separator=",">
            (#{item.autoid,jdbcType=BIGINT},
             #{item.userid,jdbcType=BIGINT},
             #{item.noticedtime,jdbcType=TIMESTAMP})
        </foreach>
    </insert>
</mapper>

说明:

mysql批量插入的限制是一次批量:1M
我这里插入的List,如上就好,如果是其他结构,查看这篇博客:http://www.cnblogs.com/admol/articles/4248159.html
collection属性:
1.如果传入的是单参数且参数类型是一个List的时候,collection属性值为list

2.如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array

3.如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map

努力一点,明天才会更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值