diff --git a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java index fb2bdfc8c..fff52b219 100644 --- a/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java +++ b/semantic/api/src/main/java/com/tencent/supersonic/semantic/api/model/request/DatabaseReq.java @@ -3,6 +3,7 @@ package com.tencent.supersonic.semantic.api.model.request; import com.google.common.collect.Lists; import com.tencent.supersonic.semantic.api.model.enums.DataTypeEnum; import lombok.Data; +import org.apache.commons.lang3.StringUtils; import java.util.List; @@ -39,10 +40,16 @@ public class DatabaseReq { if (type.equalsIgnoreCase(DataTypeEnum.H2.getFeature())) { return url; } - if (type.equalsIgnoreCase(DataTypeEnum.MYSQL.getFeature())) { - return String.format("jdbc:%s://%s:%s?sessionVariables=sql_mode='IGNORE_SPACE'&allowMultiQueries=true", - type, host, port); + String databaseUrl = database; + if (StringUtils.isBlank(databaseUrl)) { + databaseUrl = ""; + } else { + databaseUrl = "/" + database; } - return String.format("jdbc:%s://%s:%s", type, host, port); + if (type.equalsIgnoreCase(DataTypeEnum.MYSQL.getFeature())) { + return String.format("jdbc:%s://%s:%s%s?sessionVariables=sql_mode='IGNORE_SPACE'&allowMultiQueries=true", + type, host, port, databaseUrl); + } + return String.format("jdbc:%s://%s:%s%s", type, host, port, databaseUrl); } } \ No newline at end of file diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/ConnectInfo.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/ConnectInfo.java index 23e7c8dcb..c2fd080d5 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/ConnectInfo.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/pojo/ConnectInfo.java @@ -13,4 +13,6 @@ public class ConnectInfo { private String password; + private String database; + } diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java index 92009aa1b..ad10ba196 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/domain/utils/DatabaseConverter.java @@ -22,6 +22,7 @@ public class DatabaseConverter { connectInfo.setUserName(databaseReq.getUsername()); connectInfo.setPassword(databaseReq.getPassword()); connectInfo.setUrl(databaseReq.getUrl()); + connectInfo.setDatabase(databaseReq.getDatabase()); database.setConnectInfo(connectInfo); database.setCreatedAt(new Date()); database.setCreatedBy(user.getName()); @@ -58,6 +59,7 @@ public class DatabaseConverter { databaseResp.setUrl(connectInfo.getUrl()); databaseResp.setPassword(connectInfo.getPassword()); databaseResp.setUsername(connectInfo.getUserName()); + databaseResp.setDatabase(connectInfo.getDatabase()); if (StringUtils.isNotBlank(databaseDO.getAdmin())) { databaseResp.setAdmins(Arrays.asList(databaseDO.getAdmin().split(","))); }