一、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 accountBankList);
mybatis的xml代码:
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
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})
二、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 userList);
mybatis的xml代码:
INSERT INTO user(user_id, email, card_id, real_name, tpp_user_cust_id, tpp_user_id, tpp_account_id
)
VALUES
separator=",">
(#{item.userId}, #{item.email}, #{item.cardId}, #{item.realName}, #{item.tppUserCustId}, #{item.tppUserId},
#{item.tppAccountId}
)
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)
三、参考的文章