Java SpringBootJDBCTemplate以指定格式返回输出
我正在为我的应用程序使用Spring boot。使用jdbctemplate运行MySQL查询Java SpringBootJDBCTemplate以指定格式返回输出,java,spring-boot,spring-jdbc,jdbctemplate,Java,Spring Boot,Spring Jdbc,Jdbctemplate,我正在为我的应用程序使用Spring boot。使用jdbctemplate运行MySQL查询 query = "Select * from users"; List<Map<String, Object>> response = jdbcTemplate.queryForList(query); 我想使用jdbctemplate返回如下输出。jdbctemplate中是否有任何方法可以像下面这样返回输出 预期产出: [ [
query = "Select * from users";
List<Map<String, Object>> response = jdbcTemplate.queryForList(query);
我想使用jdbctemplate返回如下输出。jdbctemplate中是否有任何方法可以像下面这样返回输出
预期产出:
[
[
"id"
"firstname"
"address"
],
[
1,
"Sam",
"US"
],
[
2,
"Alex",
"US"
]
]
您可以利用将结果集
映射到所需的响应结构中。可以从ResultSet
的元数据中检索列:rs.getMetadata()
ResultSetExtractor ResultSetExtractor=newresultsetextractor(){
@凌驾
公共列表提取数据(ResultSet rs)引发SQLException、DataAccessException{
列表结果=新建ArrayList();
List columnNames=新建ArrayList();
结果。添加(列名称);
ResultSetMetaData rsmd=rs.getMetaData();
int columnCount=rsmd.getColumnCount();
对于(int col=1;col)尝试以下操作:List result=jdbcTemplate.queryForList(query.stream().map(row->row.values().toArray()).collect(Collectors.toList());您的当前输出是否是对web请求的响应主体?@HopeyOne是的,这是一个web请求request@zatefjdbctemplate中是否存在任何现有方法?看起来不存在这样的方法……此处列出了jdbctemplate的方法列表,其中没有一个方法将返回数组数组(根据您的要求)。
[
[
"id"
"firstname"
"address"
],
[
1,
"Sam",
"US"
],
[
2,
"Alex",
"US"
]
]
ResultSetExtractor<List<List<Object>>> resultSetExtractor = new ResultSetExtractor<>() {
@Override
public List<List<Object>> extractData(ResultSet rs) throws SQLException, DataAccessException {
List<List<Object>> result = new ArrayList<>();
List<Object> columnNames = new ArrayList<>();
result.add(columnNames);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
for (int col = 1; col <= columnCount; col++) {
String columnName = rsmd.getColumnName(col);
columnNames.add(columnName);
}
while (rs.next()) {
List<Object> row = new ArrayList<>();
result.add(row);
for (int col = 1; col <= columnCount; col++) {
Object value = rs.getObject(col);
row.add(value);
}
}
return result;
}
};
return jdbcTemplate.query("Select * from user", resultSetExtractor);