SpringbootJdbctemplate返回指定格式的输出

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

query = "Select * from users";

List<Map<String, Object>> response = jdbcTemplate.queryForList(query);

电流输出:

[
        {
            "id": 1,
            "firstname": "Sam",
            "address": "US"
        },
        {
            "id": 2,
            "firstname": "Alex",
            "address": "US"
        }
]

我想使用 jdbctemplate 返回如下输出。jdbctemplate 中是否有任何方法可以返回如下输出?

预期输出:

[
        [
            "id"
            "firstname"
            "address"
        ],
        [
            1,
            "Sam",
            "US"
        ],
        [
            2,
            "Alex",
            "US"
        ]
]

回答

您可以利用 将ResultSetExtractor映射ResultSet到所需的响应结构中。可以从ResultSet的元数据中检索列:rs.getMetadata()

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


以上是SpringbootJdbctemplate返回指定格式的输出的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>