提交 7f21deb8 authored 作者: 黄承天's avatar 黄承天

[数据源模块]初始提交

上级 4a54f0a7
...@@ -2,9 +2,6 @@ package com.tykj.workflowcore.ds.repository; ...@@ -2,9 +2,6 @@ package com.tykj.workflowcore.ds.repository;
import com.tykj.workflowcore.ds.entity.DataSourceInfo; import com.tykj.workflowcore.ds.entity.DataSourceInfo;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
public interface DataSourceInfoRepository extends JpaRepository<DataSourceInfo,Integer> {
@Repository
public interface DataSourceInfoRepository extends JpaRepository<DataSourceInfo,Integer> {
} }
package com.tykj.workflowcore.ds.service; package com.tykj.workflowcore.ds.service;
import com.tykj.workflowcore.model_layer.entity.ColumnInfo;
import com.tykj.workflowcore.model_layer.entity.TableInfo;
import com.tykj.workflowcore.model_layer.entity.vo.ColumnVO; import com.tykj.workflowcore.model_layer.entity.vo.ColumnVO;
import com.tykj.workflowcore.model_layer.entity.vo.TableVO; import com.tykj.workflowcore.model_layer.entity.vo.TableVO;
import com.tykj.workflowcore.model_layer.service.ModelService; import com.tykj.workflowcore.model_layer.service.ModelService;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
...@@ -19,8 +18,9 @@ import static java.lang.String.format; ...@@ -19,8 +18,9 @@ import static java.lang.String.format;
import static java.util.Objects.nonNull; import static java.util.Objects.nonNull;
/** /**
* * 用于数据同步的数据操作执行者
*/ */
@Slf4j
@Service @Service
public class DataOperation { public class DataOperation {
...@@ -31,13 +31,10 @@ public class DataOperation { ...@@ -31,13 +31,10 @@ public class DataOperation {
@Autowired @Autowired
private ModelService modelService; private ModelService modelService;
public void copyTableFromDataSource(String tableName, String dataSourceName) { /**
dataSourceManager.switchToDataSource(dataSourceName); * 同步外界数据源中所有表结构
String sql = String.valueOf(jdbcTemplate.queryForMap(format("show create table %s", tableName)).get("sql")); * @param dataSourceName 指定数据源的名字
dataSourceManager.clear(); */
jdbcTemplate.execute(sql);
}
public void syncAllTablesFromDataSource(String dataSourceName) { public void syncAllTablesFromDataSource(String dataSourceName) {
dataSourceManager.switchToDataSource(dataSourceName); dataSourceManager.switchToDataSource(dataSourceName);
List<String> tableNames = getAllTableNames(); List<String> tableNames = getAllTableNames();
...@@ -90,31 +87,37 @@ public class DataOperation { ...@@ -90,31 +87,37 @@ public class DataOperation {
); );
} }
public void syncData(String dataSourceName, String tableName) {
public void syncData(String tableName) { dataSourceManager.switchToDataSource(dataSourceName);
List<Map<String, Object>> dataList = jdbcTemplate.queryForList(format("select * from %s"), tableName); List<Map<String, Object>> dataList = getData(tableName);
dataSourceManager.clear();
clearTable(tableName);
for (Map<String, Object> data : dataList) { for (Map<String, Object> data : dataList) {
String sql = insertSql(tableName, data); String sql = insertSql(tableName, data);
log.info("execute : {}", sql);
jdbcTemplate.execute(sql);
} }
} }
private List<Map<String, Object>> getData(String tableName) {
return jdbcTemplate.queryForList(format("select * from %s", tableName));
}
private String insertSql(String tableName, Map<String, Object> data) { private String insertSql(String tableName, Map<String, Object> data) {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
result.append("insert info ").append(tableName).append(" "); result.append("insert into ").append(tableName).append(" ");
StringBuilder names = new StringBuilder(); StringBuilder names = new StringBuilder();
names.append("("); names.append("(");
StringBuilder values = new StringBuilder(); StringBuilder values = new StringBuilder();
values.append("("); values.append("(");
for (Map.Entry<String, Object> entry : data.entrySet()) { for (Map.Entry<String, Object> entry : data.entrySet()) {
if (nonNull(entry.getValue())){ if (nonNull(entry.getValue())) {
names.append(entry.getKey()).append(","); names.append(entry.getKey()).append(",");
values.append(entry.getValue()).append(","); values.append("'").append(entry.getValue()).append("'").append(",");
} }
} }
names.delete(names.indexOf(","), names.indexOf(",") + 1); names.delete(names.lastIndexOf(","), names.lastIndexOf(",") + 1);
values.delete(values.indexOf(","), values.indexOf(",") + 1); values.delete(values.lastIndexOf(","), values.lastIndexOf(",") + 1);
names.append(")"); names.append(")");
values.append(")"); values.append(")");
result.append(names); result.append(names);
...@@ -123,4 +126,8 @@ public class DataOperation { ...@@ -123,4 +126,8 @@ public class DataOperation {
return result.toString(); return result.toString();
} }
private void clearTable(String tableName) {
jdbcTemplate.execute(format("truncate table %s", tableName));
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论