凤岗东莞微信网站建设,seo智能优化公司,网站dns修改,网站改版 升级的目的是什么意思在上一篇文章中 #xff0c;我展示了如何将java.sql.ResultSet转换为JSON并将其流回调用方。 这篇文章是关于以CSV格式流式传输的。 流式传输使您可以一点一点地传输数据#xff0c;而不必将所有数据都加载到服务器的内存中。 例如#xff0c;考虑以下ResultSet #xff1… 在上一篇文章中 我展示了如何将java.sql.ResultSet转换为JSON并将其流回调用方。 这篇文章是关于以CSV格式流式传输的。 流式传输使您可以一点一点地传输数据而不必将所有数据都加载到服务器的内存中。 例如考虑以下ResultSet --------------
| Name | Age |
--------------
| Alice | 20 |
| Bob | 35 |
| Charles | 50 |
-------------- 相应的CSV是 name,age
Alice,20
Bob,35
Charles,50 以下类在我的GitHub Repository中也可用可用于将ResultSet转换为CSV。 请注意此类实现Spring的ResultSetExtractor JdbcTemplate可以使用该类从ResultSet提取结果。 /*** Streams a ResultSet as CSV.*/
public class StreamingCsvResultSetExtractorimplements ResultSetExtractorVoid {private static char DELIMITER ,;private final OutputStream os;/*** param os the OutputStream to stream the CSV to*/public StreamingCsvResultSetExtractor(final OutputStream os) {this.os os;}Overridepublic Void extractData(final ResultSet rs) {try (var pw new PrintWriter(os, true)) {final var rsmd rs.getMetaData();final var columnCount rsmd.getColumnCount();writeHeader(rsmd, columnCount, pw);while (rs.next()) {for (var i 1; i columnCount; i) {final var value rs.getObject(i);pw.write(value null ? : value.toString());if (i ! columnCount) {pw.append(DELIMITER);}}pw.println();}pw.flush();} catch (final SQLException e) {throw new RuntimeException(e);}return null;}private static void writeHeader(final ResultSetMetaData rsmd,final int columnCount, final PrintWriter pw) throws SQLException {for (var i 1; i columnCount; i) {pw.write(rsmd.getColumnName(i));if (i ! columnCount) {pw.append(DELIMITER);}}pw.println();}
} 要将其用于带有JAX-RS的Web服务中 import javax.ws.rs.core.StreamingOutput;GET
Path(runQuery)
Produces(text/csv)
public StreamingOutput runQuery() {return new StreamingOutput() {Overridepublic void write(final OutputStream os)throws IOException, WebApplicationException {jdbcTemplate.query(select name, age from person,new StreamingCsvResultSetExtractor(os));}};
} 相关文章 流式传输JDBC ResultSet作为JSON 翻译自: https://www.javacodegeeks.com/2018/12/java-streaming-jdbc-resultset-csv.html