1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package com.vcarecity.cvs.starter;
-
- import com.vcarecity.cvs.factory.ResultHandlerFactory;
- import com.vcarecity.cvs.service.ResultHandlerService;
- import com.vcarecity.cvs.service.SQLQueryService;
- import com.vcarecity.cvs.service.impl.CSVResultHandlerServiceImpl;
- import lombok.extern.slf4j.Slf4j;
-
- import javax.inject.Inject;
- import java.util.List;
-
- /**
- * @author Kerry on 19/11/20
- */
-
- @Slf4j
- public class SQLStarter {
-
- private static final int PAGE_COUNT = 10000;
-
- private int pageCount = PAGE_COUNT;
-
- private final SQLQueryService queryService;
- private final ResultHandlerFactory resultHandlerFactory;
-
- @Inject
- public SQLStarter(SQLQueryService queryService,
- ResultHandlerFactory resultHandlerFactory) {
- this.queryService = queryService;
- this.resultHandlerFactory = resultHandlerFactory;
- }
-
- public void setPageCount(int pageCount) {
- this.pageCount = pageCount;
- }
-
- /**
- * 导出数据
- *
- * @param table
- * @param properties
- * @throws Exception
- */
- public <T> void exportData(String table, String properties, Class<T> cls) throws Exception {
-
- if (cls == null) {
- //noinspection unchecked
- cls = (Class<T>) Object.class;
- }
- ResultHandlerService resultHandler = resultHandlerFactory.createResultHandler(properties);
-
-
- logger.info("start query database table = {}, file = {}, class = {}", table, properties, cls);
-
- long startTime = System.currentTimeMillis();
-
- int currentSize;
- int page = 1;
-
- do {
- List<T> result = queryService.queryByPage(table, page, this.pageCount, cls);
- resultHandler.resultHandler(result);
- currentSize = result.size();
-
- page++;
-
- } while (currentSize == this.pageCount);
-
- if (resultHandler instanceof CSVResultHandlerServiceImpl) {
- ((CSVResultHandlerServiceImpl) resultHandler).close();
- }
-
- logger.info("stop query database...{} /ms.", (System.currentTimeMillis() - startTime));
- }
-
- }
|