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

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

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

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

int rows = configTailDao.update(null, new UpdateWrapper()
                    .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()
                    .eq("config_code", dto.getCode())
                    .eq("state", Constants.UN_DISABLE)
                    .set("state", Constants.DISABLE));
        }
        return num;
    }

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

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

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

        List configDos = configDao.selectList(new QueryWrapper()
                .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 selectList = configDao.selectList(new QueryWrapper().eq("type", c.getType()));
            selectList.forEach(o -> {o.setKey(o.getCode());o.setLabel(o.getName());});
            c.setChildren(selectList);
        }
    }

你可能感兴趣的:(Java,mybatis,java,spring)