CSV流式导出(基于注解)
之前已经写过一篇csv导出可以看一下:csv流式导出
CSV流式导出(基于注解)
导出处理也可以通过url路径请以/export开头, 以便ng将导出请求分流到独立机器。
(我们有对导出做独立机器处理)
过多的文字就不做叙述了,具体可以参照上一篇。接下来就直接上代码了。
package com.opc.common.util.export;
public class ExportFactory {
private static final Logger logger = LoggerFactory.getLogger(ExportFactory.class);
private static final String CONFIG_NAME = "special_character.json";
private static final String CONFIG_APP_NAME = "opc_unmanned_shelves_man";
private static List<String> characters = Lists.newArrayList();
static {
TypedConfig<String> config = TypedConfig
.get(CONFIG_APP_NAME, CONFIG_NAME, Feature.DEFAULT, TypedConfig.STRING_PARSER);
characters = JsonUtil.ofList(config.current(), String.class);
config.addListener(new Configuration.ConfigListener<String>() {
@Override
public void onLoad(String application, String name, String value) {
logger.info("characters config value:{}", value);
characters = JsonUtil.ofList(value, String.class);
}
});
}
/**
* csv流式导出
*
* @param response
* @param fileName
* @param query
* @param processor
* @throws IOException
*/
public static void doExport(
HttpServletResponse response, String fileName, ExportQuery query, ExportProcessor processor)
throws IOException {
initResponseHead(response, fileName);
List<String> heads = getHeads(processor);
PrintWriter print = response.getWriter();
//打印表头head
println(print, heads);
List<String> fieldNames = getFieldNames(processor);
while (true) {
ExportResult exportResult = processor.exectue(query);
if (exportResult == null) {
break;