[ Mybatis-Puls ] 批量更新(UpdateWrapper)分组查询 (groupBy(“type“))

对于MyBatis-Plus进行批量更新,可以使用其提供的UpdateWrapper或LambdaUpdateWrapper对象。

例子:查询符合条件的配置进行批量更新属性

//  实体类 ConfigTailDo
//  Mapper层接口 configTailDao
//  接口调用 update方法

int rows = configTailDao.update(null, new UpdateWrapper<ConfigTailDo>()
                    .eq("config_code", dto.getCode())
                    .eq("state", Constants.UN_DISABLE)
                    .set("state", Constants.DISABLE));

    /**
     * 禁用配置,连带禁用配置详情(1启用;0禁用)
     */
    public int disableOr(ConfigDo dto) {
        if (dto.getCode() == null || "".equals(dto.getCode())) {
            return IntConstants.THREE;
        }
        ConfigDo configDo = selectConfigByCode(dto.getCode());
        // 提交状态与当前状态相同
        if (dto.getState().equals(configDo.getState())) {
            return IntConstants.TWO;
        }
        int num = configDao.updateById(dto);
        // 如为执行禁用操作
        if (num == IntConstants.ONE && Constants.DISABLE.equals(dto.getState())) {
            
            // 禁用配置详情
            configTailDao.update(null, new UpdateWrapper<ConfigTailDo>()
                    .eq("config_code", dto.getCode())
                    .eq("state", Constants.UN_DISABLE)
                    .set("state", Constants.DISABLE));
        }
        return num;
    }

Mybatis-Plus 可以通过 Wrapper 类来实现多个分组条件查询。

例子:根据配置类型获取字典

    /**
     * 根据类型获取配置
     */
    public List<ConfigDo> getList() {

        List<ConfigDo> configDos = configDao.selectList(new QueryWrapper<ConfigDo>()
                .select("type, type_name, count(*) as count")
                .groupBy("type")
                .groupBy("type_name"));

        for (ConfigDo c : configDos) {
            c.setKey(c.getType());
            c.setLabel(c.getTypeName());
            List<ConfigDo> selectList = configDao.selectList(new QueryWrapper<ConfigDo>().eq("type", c.getType()));
            selectList.forEach(o -> {o.setKey(o.getCode());o.setLabel(o.getName());});
            c.setChildren(selectList);
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值