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

[数据源模块]初始提交

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