Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBootJDBCTemplate以指定格式返回输出_Java_Spring Boot_Spring Jdbc_Jdbctemplate - Fatal编程技术网

Java SpringBootJDBCTemplate以指定格式返回输出

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中是否有任何方法可以像下面这样返回输出 预期产出: [ [

我正在为我的应用程序使用Spring boot。使用jdbctemplate运行MySQL查询

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);