mybatis批量操作

≡放荡痞女 提交于 2019-12-22 17:18:20

1.批量插入

    public int saveGroupMember(int groupId,int[] memIds) {
        List<GroupMemberPo> groupMemberPoList = new ArrayList<GroupMemberPo>();
        for(int i=0;i<memIds.length;i++){
            GroupMemberPo groupMemberPo = new GroupMemberPo();
            groupMemberPo.setGroupId(groupId);
            groupMemberPo.setMemberId(memIds[i]);
            groupMemberPo.setUpdateTime(new Date());
            groupMemberPoList.add(groupMemberPo);
        }
        return this.groupMemberDao.insert(groupMemberPoList);
    }
int insert(List<GroupMemberPo> list);
  <insert id="insert" parameterType="java.util.ArrayList">
    insert into T_ROTA_R_GROUP_MEMBER(group_id,member_id,update_time)
            VALUES
        <foreach collection ="list" item="groupMemberPo" separator =",">
             (#{groupMemberPo.groupId}, #{groupMemberPo.memberId}, #{groupMemberPo.updateTime})
        </foreach>
  </insert>

2.批量更新

下面的方式2效率更高,参考 批量更新数据两种方法效率对比

方式1:https://www.cnblogs.com/Jason-Xiang/p/6558334.html

方式2:

  <update id="deleteByDateAndOrgCode" parameterType="java.util.ArrayList">
        <foreach collection ="list" item="rotaRecordPo" separator =";">
           UPDATE  T_ROTA_RECORD  set  is_delete = 1 ,update_time = #{rotaRecordPo.updateTime}  where duty_date = #{rotaRecordPo.dutyDate}
           and org_code =  #{rotaRecordPo.orgCode} and is_delete = 0
        </foreach>
  </update>

3.foreach 传入数组

int deleteByPrimaryKey(int[] ids);
  <update id="deleteByPrimaryKey" parameterType="java.util.ArrayList">
     update    T_ROTA_R_GROUP_MEMBER 
     set is_delete= 1,update_time=(select now())
     where id  in 
    <foreach collection="array" item="item"  separator="," open="(" close=")">
        #{item}
    </foreach>
  </update>
collection 项填"array",item 项填"item"
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!