AE86 преди 4 години
родител
ревизия
646857bd90
променени са 1 файла, в които са добавени 46 реда и са изтрити 37 реда
  1. 46 37
      dbsyncer-storage/src/main/java/org/dbsyncer/storage/support/MysqlStorageServiceImpl.java

+ 46 - 37
dbsyncer-storage/src/main/java/org/dbsyncer/storage/support/MysqlStorageServiceImpl.java

@@ -19,7 +19,6 @@ import org.dbsyncer.storage.query.Param;
 import org.dbsyncer.storage.query.Query;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.dao.EmptyResultDataAccessException;
@@ -55,8 +54,7 @@ public class MysqlStorageServiceImpl extends AbstractStorageService {
 
     private static final String PREFIX_TABLE      = "dbsyncer_";
     private static final String SHOW_TABLE        = "show tables where Tables_in_%s = \"%s\"";
-    private static final String TRUNCATE_TABLE    = "TRUNCATE TABLE %s";
-    private static final String PK                = ConfigConstant.CONFIG_MODEL_ID;
+    private static final String DROP_TABLE        = "DROP TABLE %s";
     private static final String TABLE_CREATE_TIME = "create_time";
     private static final String TABLE_UPDATE_TIME = "update_time";
 
@@ -119,11 +117,7 @@ public class MysqlStorageServiceImpl extends AbstractStorageService {
 
     @Override
     public void insert(StorageEnum type, String table, Map params) {
-        Executor executor = getExecutor(type, table);
-        String sql = executor.getInsert();
-        List<Object> args = getParams(executor, params);
-        int insert = jdbcTemplate.update(sql, args.toArray());
-        Assert.isTrue(insert > 0, "insert failed");
+        executeInsert(type, table, params);
     }
 
     @Override
@@ -146,20 +140,18 @@ public class MysqlStorageServiceImpl extends AbstractStorageService {
 
     @Override
     public void deleteAll(StorageEnum type, String table) {
-        String sql = String.format(TRUNCATE_TABLE, PREFIX_TABLE.concat(table));
+        String sql = String.format(DROP_TABLE, PREFIX_TABLE.concat(table));
         jdbcTemplate.execute(sql);
     }
 
     @Override
     public void insertLog(StorageEnum type, String table, Map<String, Object> params) {
-        getExecutor(type, table);
-
+        executeInsert(type, table, params);
     }
 
     @Override
     public void insertData(StorageEnum type, String table, List<Map> list) {
-        getExecutor(type, table);
-
+        executeInsert(type, table, list);
     }
 
     @Override
@@ -172,10 +164,46 @@ public class MysqlStorageServiceImpl extends AbstractStorageService {
         return "_";
     }
 
+    private int executeInsert(StorageEnum type, String table, Map params) {
+        Executor executor = getExecutor(type, table);
+        String sql = executor.getInsert();
+        List<Object> args = getParams(executor, params);
+        int insert = jdbcTemplate.update(sql, args.toArray());
+        if (insert < 1) {
+            logger.error("table:{}, params:{}");
+            throw new StorageException("insert failed");
+        }
+        return insert;
+    }
+
+    private void executeInsert(StorageEnum type, String table, List<Map> list) {
+
+    }
+
     private List<Object> getParams(Executor executor, Map params) {
         return executor.getFieldPairs().stream().map(p -> p.convert(params.get(p.labelName))).collect(Collectors.toList());
     }
 
+    private Executor getExecutor(StorageEnum type, String table) {
+        // 获取模板
+        Executor executor = tables.get(type.getType());
+        Assert.notNull(executor, "未知的存储类型");
+
+        synchronized (tables) {
+            // 检查本地缓存
+            Executor e = tables.get(table);
+            if (tables.containsKey(table)) {
+                return e;
+            }
+            // 不存在
+            Executor newExecutor = new Executor(executor.getGroup(), executor.getFieldPairs(), executor.dynamicTableName);
+            createTableIfNotExist(table, newExecutor);
+
+            tables.putIfAbsent(table, newExecutor);
+            return newExecutor;
+        }
+    }
+
     private String buildQuerySql(Query query, Executor executor, List<Object> args) {
         StringBuilder sql = new StringBuilder(executor.getQuery());
         List<Param> params = query.getParams();
@@ -198,26 +226,6 @@ public class MysqlStorageServiceImpl extends AbstractStorageService {
         return sql.toString();
     }
 
-    private Executor getExecutor(StorageEnum type, String table) {
-        // 获取模板
-        Executor executor = tables.get(type.getType());
-        Assert.notNull(executor, "未知的存储类型");
-
-        synchronized (tables) {
-            // 检查本地缓存
-            Executor e = tables.get(table);
-            if (tables.containsKey(table)) {
-                return e;
-            }
-            // 不存在
-            Executor newExecutor = new Executor(executor.getGroup(), executor.getFieldPairs(), executor.dynamicTableName);
-            createTableIfNotExist(table, newExecutor);
-
-            tables.putIfAbsent(table, newExecutor);
-            return newExecutor;
-        }
-    }
-
     private void initTable() {
         // 配置
         List<FieldPair> configFields = Arrays.asList(
@@ -271,11 +279,12 @@ public class MysqlStorageServiceImpl extends AbstractStorageService {
             jdbcTemplate.execute(ddl);
         }
 
+        String pk = ConfigConstant.CONFIG_MODEL_ID;
         List<String> fieldName = executor.getFieldPairs().stream().map(p -> p.columnName).collect(Collectors.toList());
-        String query = new SqlBuilderQuery().buildStandardSql(table, PK, fieldName, "", "");
-        String insert = SqlBuilderEnum.INSERT.getSqlBuilder().buildSql(table, PK, fieldName, "", "", connector);
-        String update = SqlBuilderEnum.UPDATE.getSqlBuilder().buildSql(table, PK, fieldName, "", "", connector);
-        String delete = SqlBuilderEnum.DELETE.getSqlBuilder().buildSql(table, PK, fieldName, "", "", connector);
+        String query = new SqlBuilderQuery().buildStandardSql(table, pk, fieldName, "", "");
+        String insert = SqlBuilderEnum.INSERT.getSqlBuilder().buildSql(table, pk, fieldName, "", "", connector);
+        String update = SqlBuilderEnum.UPDATE.getSqlBuilder().buildSql(table, pk, fieldName, "", "", connector);
+        String delete = SqlBuilderEnum.DELETE.getSqlBuilder().buildSql(table, pk, fieldName, "", "", connector);
         executor.setQuery(query).setInsert(insert).setUpdate(update).setDelete(delete);
     }