ApiImplicitParam(dataType = Integer)说明int类型的参数不会进入GET请求

记录一下使用swagger2遇到的坑
方法执行的功能是根据用户id对User对象进行查询,
首先看我原来的代码:

@ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
//    添加接口参数说明注解
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer", paramType = "path")//dataType = "Integer",web页面无法进入请求
    @RequestMapping(value = "user/{id}", method = RequestMethod.GET)//put方法报错
    public ResponseEntity<JsonResult> getUserById (@PathVariable(value = "id") Integer id)
    {...}

对应的web页面执行时是这样的,
在这里插入图片描述
打开网页检查,并没有进入请求,
花费很长时间查看,终于发现问题了,
当我把 @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer", paramType = "path");
中的dataType = "Integer"换成dataType = "Long"以后,能够正常执行查询了.
在这里插入图片描述

然鹅我并没有搞明白这是为什么,欢迎品论区讨论,求解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个需求涉及到多个方面的技术,需要细分为以下几个步骤: 1. 建立Kafka连接:使用Kafka的Java客户端API建立连接,并对连接进行SSL验证。 2. 建立HTTP/2连接池:使用HttpClient的Java客户端API建立连接池,并设置连接池的大小和超时时间。 3. 实时获取数据集:使用Presto的Java客户端API向数据库发送SQL查询语句,并获取查询结果。 4. 将查询结果封装成API:将查询结果使用Java对象封装,并使用Spring Boot或其他框架发布API。 5. 解析数据集字段:使用Presto的Java客户端API获取数据集的元数据信息,并解析出所有的字段名和对应的数据类型。 6. 转换数据类型:使用Java的数据类型转换函数将API传递过来的字符串参数转换为数据集字段对应的数据类型。 7. 处理多个参数:使用Java的字符串函数将多个参数转换成SQL查询语句中的“IN”条件,并将参数值按照数据类型进行转换。 下面是一个大体的代码实现示例: ```java // 建立Kafka连接 KafkaConsumer<String, String> consumer = new KafkaConsumer<>(kafkaProps); consumer.subscribe(Collections.singletonList(topic)); // 建立HTTP/2连接池 CloseableHttpAsyncClient httpClient = HttpAsyncClients.custom() .setConnectionManager(poolManager) .setDefaultRequestConfig(requestConfig) .build(); // 实时获取数据集 PrestoClient prestoClient = new PrestoClient(); List<Map<String, Object>> queryResult = prestoClient.executeQuery(querySql); // 将查询结果封装成API @RestController @RequestMapping("/api") public class DataController { @GetMapping("/{column}") public List<Object> getData(@PathVariable String column) { List<Object> result = new ArrayList<>(); for (Map<String, Object> row : queryResult) { result.add(row.get(column)); } return result; } } // 解析数据集字段 List<ColumnMetadata> columns = prestoClient.getColumns(tableName); Map<String, Class<?>> columnTypes = new HashMap<>(); for (ColumnMetadata column : columns) { columnTypes.put(column.getName(), PrestoType.toJavaType(column.getType())); } // 转换数据类型 private Object convertToDataType(String value, Class<?> dataType) { if (dataType == String.class) { return value; } else if (dataType == Integer.class) { return Integer.parseInt(value); } else if (dataType == Double.class) { return Double.parseDouble(value); } else if (dataType == Boolean.class) { return Boolean.parseBoolean(value); } else { throw new IllegalArgumentException("Unsupported data type: " + dataType.getName()); } } // 处理多个参数 String[] values = params.split(","); List<Object> paramValues = new ArrayList<>(); for (String value : values) { Object paramValue = convertToDataType(value, columnTypes.get(columnName)); paramValues.add(paramValue); } String inClause = String.join(",", Collections.nCopies(paramValues.size(), "?")); String querySql = "SELECT * FROM " + tableName + " WHERE " + columnName + " IN (" + inClause + ")"; PreparedStatement pstmt = conn.prepareStatement(querySql); for (int i = 0; i < paramValues.size(); i++) { pstmt.setObject(i + 1, paramValues.get(i)); } ResultSet resultSet = pstmt.executeQuery(); ``` 需要注意的是,以上代码只是一个大体的示例,实际的实现方式还需要根据具体的业务需求进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值