mirror of
https://gitee.com/dromara/dbswitch.git
synced 2025-09-11 14:39:05 +00:00
并发调用问题修复
This commit is contained in:
@@ -23,6 +23,7 @@ import com.weishao.dbswitch.core.util.JdbcUrlUtils;
|
|||||||
/**
|
/**
|
||||||
* 结构迁移转换实现类
|
* 结构迁移转换实现类
|
||||||
* 备注:字段信息、主键、生成建表的SQL语句
|
* 备注:字段信息、主键、生成建表的SQL语句
|
||||||
|
* 说明:不支持并发调用,调用方需要做并发一致性保证
|
||||||
*
|
*
|
||||||
* @author tang
|
* @author tang
|
||||||
*
|
*
|
||||||
|
@@ -9,12 +9,15 @@
|
|||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
package com.weishao.dbswitch.webapi.config;
|
package com.weishao.dbswitch.webapi.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
|
||||||
import com.weishao.dbswitch.core.service.IMigrationService;
|
import com.weishao.dbswitch.core.service.IMigrationService;
|
||||||
|
import com.weishao.dbswitch.core.service.impl.MigrationConvertServiceImpl;
|
||||||
import com.weishao.dbswitch.sql.service.ISqlConvertService;
|
import com.weishao.dbswitch.sql.service.ISqlConvertService;
|
||||||
import com.weishao.dbswitch.sql.service.ISqlGeneratorService;
|
import com.weishao.dbswitch.sql.service.ISqlGeneratorService;
|
||||||
import com.weishao.dbswitch.core.service.impl.MigrationConvertServiceImpl;
|
|
||||||
import com.weishao.dbswitch.sql.service.impl.CalciteSqlConvertServiceImpl;
|
import com.weishao.dbswitch.sql.service.impl.CalciteSqlConvertServiceImpl;
|
||||||
import com.weishao.dbswitch.sql.service.impl.MyselfSqlGeneratorServiceImpl;
|
import com.weishao.dbswitch.sql.service.impl.MyselfSqlGeneratorServiceImpl;
|
||||||
|
|
||||||
@@ -22,6 +25,7 @@ import com.weishao.dbswitch.sql.service.impl.MyselfSqlGeneratorServiceImpl;
|
|||||||
public class AdapterBeanConfiguration {
|
public class AdapterBeanConfiguration {
|
||||||
|
|
||||||
@Bean("MigrationService")
|
@Bean("MigrationService")
|
||||||
|
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
|
||||||
public IMigrationService getMigrationService() {
|
public IMigrationService getMigrationService() {
|
||||||
return new MigrationConvertServiceImpl();
|
return new MigrationConvertServiceImpl();
|
||||||
}
|
}
|
||||||
|
@@ -9,29 +9,32 @@
|
|||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
package com.weishao.dbswitch.webapi.controller;
|
package com.weishao.dbswitch.webapi.controller;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import io.swagger.annotations.Api;
|
import java.util.Map;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.weishao.dbswitch.common.constant.DatabaseTypeEnum;
|
import com.weishao.dbswitch.common.constant.DatabaseTypeEnum;
|
||||||
import com.weishao.dbswitch.core.model.ColumnDescription;
|
import com.weishao.dbswitch.core.model.ColumnDescription;
|
||||||
import com.weishao.dbswitch.core.model.DatabaseDescription;
|
import com.weishao.dbswitch.core.model.DatabaseDescription;
|
||||||
import com.weishao.dbswitch.webapi.model.ResponseResult;
|
|
||||||
import com.weishao.dbswitch.core.model.TableDescription;
|
import com.weishao.dbswitch.core.model.TableDescription;
|
||||||
import com.weishao.dbswitch.core.service.IMigrationService;
|
import com.weishao.dbswitch.core.service.IMigrationService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import com.weishao.dbswitch.webapi.model.ResponseResult;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.http.MediaType;
|
import io.swagger.annotations.Api;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@Api(tags = { "表结构抽取转换接口" })
|
@Api(tags = { "表结构抽取转换接口" })
|
||||||
@RestController
|
@RestController
|
||||||
@@ -39,8 +42,11 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
public class StructureController {
|
public class StructureController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("MigrationService")
|
private ApplicationContext applicationContext;
|
||||||
private IMigrationService migrationService;
|
|
||||||
|
private IMigrationService getMigrationService() {
|
||||||
|
return (IMigrationService) applicationContext.getBean("MigrationService");
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/models_list", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
@RequestMapping(value = "/models_list", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@ApiOperation(value = "查询所有的模式(model/schema)", notes = "获取数据库中所有的模式(model/schema),,请求的示例包体格式为:\n"
|
@ApiOperation(value = "查询所有的模式(model/schema)", notes = "获取数据库中所有的模式(model/schema),,请求的示例包体格式为:\n"
|
||||||
@@ -99,6 +105,7 @@ public class StructureController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMigrationService migrationService=this.getMigrationService();
|
||||||
DatabaseDescription databaseDesc = new DatabaseDescription(type, host, port, mode, dbname, charset, user,passwd);
|
DatabaseDescription databaseDesc = new DatabaseDescription(type, host, port, mode, dbname, charset, user,passwd);
|
||||||
migrationService.setDatabaseConnection(databaseDesc);
|
migrationService.setDatabaseConnection(databaseDesc);
|
||||||
return ResponseResult.success(migrationService.querySchemaList());
|
return ResponseResult.success(migrationService.querySchemaList());
|
||||||
@@ -164,6 +171,7 @@ public class StructureController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMigrationService migrationService=this.getMigrationService();
|
||||||
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
||||||
migrationService.setDatabaseConnection(databaseDesc);
|
migrationService.setDatabaseConnection(databaseDesc);
|
||||||
List<TableDescription> tables=migrationService.queryTableList(model);
|
List<TableDescription> tables=migrationService.queryTableList(model);
|
||||||
@@ -244,7 +252,7 @@ public class StructureController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> ret = new HashMap<String, Object>();
|
Map<String, Object> ret = new HashMap<String, Object>();
|
||||||
|
IMigrationService migrationService=this.getMigrationService();
|
||||||
DatabaseDescription databaseDesc = new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
DatabaseDescription databaseDesc = new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
||||||
migrationService.setDatabaseConnection(databaseDesc);
|
migrationService.setDatabaseConnection(databaseDesc);
|
||||||
List<ColumnDescription> columnDescs = migrationService.queryTableColumnMeta(model, src_table);
|
List<ColumnDescription> columnDescs = migrationService.queryTableColumnMeta(model, src_table);
|
||||||
@@ -343,6 +351,7 @@ public class StructureController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMigrationService migrationService=this.getMigrationService();
|
||||||
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
||||||
migrationService.setDatabaseConnection(databaseDesc);
|
migrationService.setDatabaseConnection(databaseDesc);
|
||||||
List<ColumnDescription> columnDescs=migrationService.querySqlColumnMeta(querysql);
|
List<ColumnDescription> columnDescs=migrationService.querySqlColumnMeta(querysql);
|
||||||
@@ -443,6 +452,7 @@ public class StructureController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMigrationService migrationService=this.getMigrationService();
|
||||||
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
||||||
DatabaseTypeEnum taregetDabaseType=DatabaseTypeEnum.valueOf(target.toUpperCase());
|
DatabaseTypeEnum taregetDabaseType=DatabaseTypeEnum.valueOf(target.toUpperCase());
|
||||||
migrationService.setDatabaseConnection(databaseDesc);
|
migrationService.setDatabaseConnection(databaseDesc);
|
||||||
@@ -547,6 +557,7 @@ public class StructureController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMigrationService migrationService=this.getMigrationService();
|
||||||
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
DatabaseDescription databaseDesc=new DatabaseDescription(type, host, port, mode, dbname, charset, user, passwd);
|
||||||
migrationService.setDatabaseConnection(databaseDesc);
|
migrationService.setDatabaseConnection(databaseDesc);
|
||||||
migrationService.testQuerySQL(querysql);
|
migrationService.testQuerySQL(querysql);
|
||||||
|
Reference in New Issue
Block a user