jdk8 优化以下代码 public List<String> getTableColumnEnum(Integer datasourceId, String tableName, String columnName) { String sql = String.format(SQL_TEMPLATE, columnName, tableName, LIMIT); SqlExecuteRequest sqlExecuteRequest = new SqlExecuteRequest(); sqlExecuteRequest.setDataSourceId(datasourceId); sqlExecuteRequest.setSql(Func.encodeBase64(sql)); R<JSONObject> sqlExecuteResult = dolphinSqlClient.sqlExecute(sqlExecuteRequest); if (sqlExecuteResult == null) { throw new ServiceException("查询枚举值失败!"); } if (!sqlExecuteResult.isSuccess()) { throw new ServiceException("查询枚举值失败!"); } List<String> columnValues = new ArrayList<>(); JSONArray results = sqlExecuteResult.getData().getJSONArray("result"); for (int i = 0; i < results.size(); i++) { JSONObject result = results.getJSONObject(i); columnValues.add(result.getString("columnName")); } return columnValues.stream().distinct().collect(Collectors.toList()); }
时间: 2024-02-02 18:02:26 浏览: 156
可以使用 Java 8 的 Stream API 对代码进行优化,代码如下:
```
public List<String> getTableColumnEnum(Integer datasourceId, String tableName, String columnName) {
String sql = String.format(SQL_TEMPLATE, columnName, tableName, LIMIT);
SqlExecuteRequest sqlExecuteRequest = new SqlExecuteRequest();
sqlExecuteRequest.setDataSourceId(datasourceId);
sqlExecuteRequest.setSql(Func.encodeBase64(sql));
R<JSONObject> sqlExecuteResult = dolphinSqlClient.sqlExecute(sqlExecuteRequest);
if (sqlExecuteResult == null || !sqlExecuteResult.isSuccess()) {
throw new ServiceException("查询枚举值失败!");
}
JSONArray results = sqlExecuteResult.getData().getJSONArray("result");
return results.stream()
.map(result -> result.getString("columnName"))
.distinct()
.collect(Collectors.toList());
}
```
这里使用了 Stream API 对结果集进行了处理,将其转换为一个 String 类型的 List,然后使用 distinct() 方法去重。同时,判断 SQL 执行结果是否成功可以使用一个条件语句来简化代码。
阅读全文