MP除了常用的UpdateById 这种按主键更新的方法之外,还有按条件更新指定字段的方法:使用 UpdateWrapper  指定条件与设置更新字段值

参考代码如下:

int rows=0;
        SysTenant tenant=tenantMapper.selectById(tenantId);
        Integer points=0;  //账套授权的产品点数
        String column="";
        switch(code){
            case "0": points=tenant.getDs(); column="login0";break;
            case "1": points=tenant.getDs1();column="login1";break;
            case "2": points=tenant.getDs2();column="login2";break;
            case "3": points=tenant.getDs3();column="login3";break;
            case "4": points=tenant.getDs4();column="login4";break;
            case "5": points=tenant.getDs5();column="login5";break;
            case "6": points=tenant.getDs6();column="login6";break;
            case "7": points=tenant.getDs7();column="login7";break;
            case "8": points=tenant.getDs8();column="login8";break;
            default:  throw new BusinessException("暂不支持此类型产品的授权");
        }
        List<SysUser> userList1=getTenantAuthorizationUserList( code, tenantId,1); //已授权的用户
        List<Long> userIdList2=new ArrayList<>(); //本次需要处理的用户ID列表(排除已授权的)
        int points1=userList1.size(),points2;
        for(SysUser user:userList){
            boolean exists=false;
            Long userId=user.getUserId();
            for(SysUser user1:userList1){
                Long userId1=user1.getUserId();
                if(userId.equals(userId1)){
                    exists=true;
                    break;
                }
            }
            if(!exists) userIdList2.add(userId);
        }
        points2=userIdList2.size();
        if(points<points1+points2) throw new BusinessException("账套授权点数不足");

        if(points2>0){
            UpdateWrapper updateWrapper=new UpdateWrapper();
            updateWrapper.eq("tenant_id", tenantId);
            updateWrapper.in("user_id",userIdList2);
            updateWrapper.set(column, 1);
            rows=tenantUserMapper.update(null, updateWrapper);
        }
        return rows;
 String column="";
        switch(code){
            case "0": column="login0";break;
            case "1": column="login1";break;
            case "2": column="login2";break;
            case "3": column="login3";break;
            case "4": column="login4";break;
            case "5": column="login5";break;
            case "6": column="login6";break;
            case "7": column="login7";break;
            case "8": column="login8";break;
            default: break;
        }
        UpdateWrapper updateWrapper=new UpdateWrapper();
        updateWrapper.eq("tenant_id", tenantId);
        updateWrapper.eq("user_id",user.getUserId());
        updateWrapper.set(column, 0);
        int rows=tenantUserMapper.update(null, updateWrapper);
        return rows;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐