mysql批量插入以及批量更新

一、mysql批量插入

1.SQL语句

INSERT INTO table_name (col_name1, col_name2,...) VALUES(col_value1,col_value2,...), (col_value1,col_value2,...)

2.注意事项

mysql语句并不是越长越好,mysql语句长度有限制,可以查看mysql的配置文件my.in中max_allowed_packet属性,并进行相应设置(比如max_allowed_packet = 20M)。

3.案例(使用java和mybatis)

java代码:

 int saveAll(Collection<AccountBank> accountBankList);

mybatis的xml代码:

 <insert id="saveAll" parameterType="collection">
        INSERT INTO account_bank (user_id, bank_no, bank, branch, province, city, area, add_time, add_ip, status,
        pic_path, tpp_card_id, mobile_phone)
        VALUES
        <foreach collection="list" item="item" index="index"
                 separator=",">
            (#{item.userId}, #{item.bankNo}, #{item.bank}, #{item.branch}, #{item.province}, #{item.city}, #{item.area}, #{item.addTime}, #{item.addIp}, #{item.status}, #{item.picPath}, #{item.tppCardId}, #{item.mobilePhone})
        </foreach>
 </insert>

二、mysql批量更新

1.SQL语句

INSERT INTO table_name (col_name1, col_name2,...)  VALUES(col_value1,col_value2,...), (col_value1,col_value2,...) ON DUPLICATE KEY UPDATE col_name1=VALUES(col_name1), col_name2= VALUES(col_name2)  

2.注意事项

它的实现原理是,首先mysql根据表名后面列出的主键,查找表(因为是主键,所以在表中唯一存在)。如果存在该行数据,则按照最后的col_name = values(col_name)列表对相应的字段,按照values列表中给出的值进行更新。

3.案例(使用java和mybatis)

java代码:

  int updateAll(Collection<User> userList);

mybatis的xml代码:

 <insert id="updateAll" parameterType="collection">
        INSERT INTO user(user_id, email, card_id, real_name, tpp_user_cust_id, tpp_user_id, tpp_account_id
        )
        VALUES
        <foreach collection="list" item="item" index="index"
                 separator=",">
            (#{item.userId}, #{item.email}, #{item.cardId}, #{item.realName}, #{item.tppUserCustId}, #{item.tppUserId},
            #{item.tppAccountId}
            )
        </foreach>
        ON DUPLICATE KEY UPDATE email=VALUES(email),card_id=VALUES(card_id),real_name=VALUES(real_name),
        tpp_user_cust_id=VALUES(tpp_user_cust_id),tpp_user_id=VALUES(tpp_user_id), tpp_account_id=VALUES(tpp_account_id)
 </insert>

三、参考的文章

  1. 《MySql快速插入以及批量更新》http://www.2cto.com/database/201304/202410.html

转载于:https://my.oschina.net/zhaokaiju/blog/775552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值