123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.vcarecity.cvs.starter;
-
- import com.vcarecity.cvs.core.ColumnUpdateMapper;
- 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;
-
- import static com.vcarecity.cvs.FileExporterApp.TABLE_COLUMN;
-
- /**
- * @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 exportDataAndConvert(String table, Object 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 {
- // query
- List<T> result = queryService.queryByPage(table, page, this.pageCount, cls);
- final String[] headers = TABLE_COLUMN.get(table);
- // convert or save
- resultHandler.resultHandler(table, headers, result);
- currentSize = result.size();
-
- page++;
-
- } while (currentSize == this.pageCount);
-
- if (resultHandler instanceof CSVResultHandlerServiceImpl) {
- ((CSVResultHandlerServiceImpl) resultHandler).close();
- }
-
-
- final String[] headers = TABLE_COLUMN.get(table);
- final String[] mysqlHeader = ColumnUpdateMapper.updateColumnName(table, headers);
-
- logger.info("mysql header: {}", String.join(",", mysqlHeader));
-
- logger.info("stop query database...{} /ms.", (System.currentTimeMillis() - startTime));
- }
-
- }
|