mybatis之foreach批量插入网络交互分析

业务代码:
IGroupMemberIndexOper oper = session.getMapper(IGroupMemberIndexOper.class);
oper.saveGroupMemberIndex(indexDOList);
mapper:
id="saveGroupMemberIndex" parameterType="List" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO `t_group_member_index` (gid, uid, msg_id) VALUES
    collection="list" item="item" index="index" separator=",">
        (#{item.gid}, #{item.uid}, #{item.msgId})
    
使用foreach来批量插入数据,使用wireshark抓包观察:

逐包分析:
304:select1

305:成功
306:SET autocommit=0

307:成功
308:select @@session.tx_read_only

309:成功
310:执行insert

从抓包可以看出,mybatis的foreach,是将sql拼接了,从而实现一次网络交互批量查询,减少了网络交互次数,从而提高性能。
311:是一个异常信息,这里不去分析了

你可能感兴趣的:(mybatis之foreach批量插入网络交互分析)