123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.vcarecity.cvs.service.impl;
-
- import com.google.inject.Inject;
- import com.google.inject.assistedinject.Assisted;
- import com.vcarecity.cvs.core.ColumnUpdateMapper;
- import com.vcarecity.cvs.properties.AppProperties;
- import com.vcarecity.cvs.service.ResultHandlerService;
- import com.vcarecity.cvs.util.CreateDatasource;
- import com.zaxxer.hikari.HikariDataSource;
- import lombok.extern.slf4j.Slf4j;
-
- import java.sql.Connection;
- import java.sql.Date;
- import java.sql.Statement;
- import java.sql.Timestamp;
- import java.util.List;
-
- /**
- * @author Kerry on 19/11/21
- */
-
-
- @Slf4j
- public class MySQLResultStatHandlerServiceImpl implements ResultHandlerService {
-
-
- private final String sql;
- private final HikariDataSource dataSource;
-
- @Inject
- public MySQLResultStatHandlerServiceImpl(AppProperties properties, @Assisted Object sql) {
- this.sql = (String) sql;
- this.dataSource = CreateDatasource.createDataSource(properties.getToDb());
- }
-
-
- @Override
- public <T> void resultHandler(String table, String[] header, List<T> dataList) throws Exception {
-
-
- long startTime = System.currentTimeMillis();
-
- StringBuffer sb = new StringBuffer();
-
- final String[] newHeaders = ColumnUpdateMapper.updateColumnName(table, header);
- final String column = String.join(",", newHeaders);
-
-
- sb.append("INSERT INTO ").append(table).append("(").append(String.join(",", column)).append(") VALUES ");
-
- for (T t : dataList) {
- if (t.getClass().isArray()) {
- Object[] rows = (Object[]) t;
- sb.append("(");
- for (int i = 0; i < header.length; i++) {
-
- Object row = rows[i];
- if (row instanceof String) {
- sb.append("'").append(row).append("'");
- } else if (row instanceof Date) {
- sb.append("'").append(row).append("'");
- } else if (row instanceof Timestamp) {
- sb.append("'").append(row).append("'");
- } else {
- sb.append(row);
- }
- if (i != header.length - 1) {
- sb.append(",");
- }
- }
- sb.append("),");
- }
- }
- final StringBuffer stringBuffer = sb.deleteCharAt(sb.length() - 1);
-
- // logger.debug("{}", stringBuffer.toString());
-
- final Connection connection = dataSource.getConnection();
-
- final Statement statement = connection.createStatement();
- statement.execute(stringBuffer.toString());
- statement.close();
- connection.close();
-
- logger.info("WRITE SUCCESS to mysql usage time {} /ms, size = {}", System.currentTimeMillis() - startTime, dataList.size());
- }
-
-
- }
|