mybatisPlus 对字符串字段转数字然后进行排序

示例代码:

@Override
    public IPage<DeviceAlarmSignalConfigVO> findPage(DeviceAlarmSignalConfigQueryRO query, CurrentUser user) {
        query.setFirmCode(user.getFirmCode());
        IPage<DeviceAlarmSignalConfig> requestPage = new Page<>(query.getPage(), query.getLimit());
        QueryWrapper<DeviceAlarmSignalConfig> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().like(StrUtil.isNotEmpty(query.getConfigName()), DeviceAlarmSignalConfig::getConfigName, query.getConfigName())
            .eq(StrUtil.isNotEmpty(query.getFirmCode()), DeviceAlarmSignalConfig::getFirmCode, query.getFirmCode())
            .like(StrUtil.isNotEmpty(query.getSignalName()), DeviceAlarmSignalConfig::getSignalName, query.getSignalName())
            .eq(Objects.nonNull(query.getSignalType()), DeviceAlarmSignalConfig::getSignalType, query.getSignalType());
        // 设置排序情况
        if (StrUtil.isEmpty(query.getDescs()) && StrUtil.isEmpty(query.getAscs())) {
            // 默认排序
            queryWrapper.lambda().orderByAsc(DeviceAlarmSignalConfig::getConfigName);
            queryWrapper.orderByAsc("IFNULL(CAST(signal_code AS SIGNED), 999999)");
        } else {
            // 自定义排序
            IcpQuery.sortByDiy(query, queryWrapper, DeviceAlarmSignalConfig.class);
        }
        IPage<DeviceAlarmSignalConfig> page = this.page(requestPage, queryWrapper);
        IPage<DeviceAlarmSignalConfigVO> voPage = DeviceAlarmSignalConfigConverter.INSTANCE.vo(page);
        return voPage;
    }

主要使用此行代码实现:queryWrapper.orderByAsc("IFNULL(CAST(signal_code AS SIGNED), 999999)");

posted @ 2024-12-24 09:05  官萧何  阅读(468)  评论(0)    收藏  举报