不用主键字段批量更新

//批量更新成员信息
            if (updateList.size()>0) {
                int num = 5000;
                int l = updateList.size()/num;
                int j = updateList.size()%num;
                for (int i = 0; i <= l; i++){
                    List<SysUserInfo> updates;
                    if (i!=l) {
                        updates = updateList.subList(i * num, i * num + num);
                    }else {
                        updates = updateList.subList(i * num, i * num + j);
                    }
                    sysUserInfoMapper.batchUpdateByMobile(updates);
                }
            }
/**
     * 根据手机批量更新用户信息
     * @param list
     * @return
     */
    @Update("<script>" +
            "UPDATE sys_user_info " +
            "SET " +
            "job_num = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.jobNum,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "user_name = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.userName,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "dep_id = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.depId,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "entry_date = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.entryDate,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "quit_date = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.quitDate,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "gender = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.gender,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "sure_leave = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.sureLeave,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "job_level = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.jobLevel,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "birthday = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.birthday,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "age = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.age,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "entry_age = CASE mobile " +
            "<foreach collection='cos' item='co'>" +
            "WHEN #{co.mobile} THEN #{co.entryAge,jdbcType=VARCHAR} " +
            "</foreach>"+
            "END," +
            "update_time = NOW() " +
            "WHERE mobile IN " +
            "<foreach collection='cos' item='co' open='(' separator=',' close=')'>" +
            "#{co.mobile}" +
            "</foreach>" +
            "</script>")
    int batchUpdateByMobile(@Param("cos") List<SysUserInfo> list);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值