connectionLocal = new ThreadLocal<>();
-
/**
*
* String sql = "SELECT * FROM datasource_config WHERE dc_id=${id}";
@@ -63,7 +51,7 @@ public class SqlHelper {
DataSource dataSource = DataSourceManager.getDataSource(generatorConfig);
String runSql = buildSqlWithParams(dataSource, sql, params);
String[] sqls = runSql.split(";");
- Connection conn = null;
+ Connection conn;
try {
conn = DataSourceManager.getConnection(generatorConfig);
SqlRunner runner = buildSqlRunner(conn);
@@ -82,34 +70,14 @@ public class SqlHelper {
}
}
-
- public static Connection getConnection(GeneratorConfig generatorConfig) {
- Connection connection = connectionLocal.get();
- if (connection == null) {
- try {
- connection = getDataSource(generatorConfig).getConnection();
- connectionLocal.set(connection);
- } catch (SQLException e) {
- logger.error("获取Connection失败, jdbcUrl:{}", generatorConfig.getJdbcUrl(), e);
- throw new RuntimeException("获取Connection失败", e);
- }
- }
- return connection;
- }
-
- public static void closeConnection() {
- Connection connection = connectionLocal.get();
- if (connection != null) {
- try {
- connection.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- connectionLocal.remove();
- }
-
- // 参数绑定
+ /**
+ * 参数绑定
+ *
+ * @param dataSource 数据源
+ * @param sql sql模板
+ * @param params 参数
+ * @return 构建好的耍起莱
+ */
private static String buildSqlWithParams(DataSource dataSource, String sql, Map params) {
Configuration configuration = buildConfiguration(dataSource);
TextSqlNode node = new TextSqlNode(sql);
@@ -126,21 +94,6 @@ public class SqlHelper {
return new SqlRunner(connection);
}
-
- private static DataSource getDataSource(GeneratorConfig generatorConfig) {
- String jdbcUrl = generatorConfig.getJdbcUrl();
- return dataSourceMap.computeIfAbsent(jdbcUrl, key -> {
- Properties properties = new Properties();
- properties.setProperty(DRIVER, generatorConfig.getDriverClass());
- properties.setProperty(URL, jdbcUrl);
- properties.setProperty(USERNAME, generatorConfig.getUsername());
- properties.setProperty(PASSWORD, generatorConfig.getPassword());
- PooledDataSourceFactory pooledDataSourceFactory = new PooledDataSourceFactory();
- pooledDataSourceFactory.setProperties(properties);
- return pooledDataSourceFactory.getDataSource();
- });
- }
-
private static Configuration buildConfiguration(DataSource dataSource) {
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development",
--
Gitee
From eb15663a64b950337a38c1fd1b5b6704423bf5c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com>
Date: Fri, 19 Jul 2024 20:37:46 +0800
Subject: [PATCH 34/38] 2.0.3
---
changelog.md | 36 +++++++++++++
gen/pom.xml | 2 +-
.../com/gitee/gen/config/ConnectConfig.java | 53 +++++++++++++++++++
.../com/gitee/gen/config/DbTypeConfig.java | 33 ++++++++++++
.../DatasourceConfigController.java | 10 ++--
.../gitee/gen/entity/DatasourceConfig.java | 3 +-
.../java/com/gitee/gen/gen/DBConnect.java | 1 +
.../main/java/com/gitee/gen/gen/DbType.java | 5 +-
.../com/gitee/gen/gen/GeneratorConfig.java | 46 +++++++++++-----
.../com/gitee/gen/gen/SQLServiceFactory.java | 36 ++++++-------
.../gen/service/DatasourceConfigService.java | 9 ++--
gen/src/main/resources/app.yml | 30 +++++++++++
12 files changed, 219 insertions(+), 45 deletions(-)
create mode 100644 gen/src/main/java/com/gitee/gen/config/ConnectConfig.java
create mode 100644 gen/src/main/java/com/gitee/gen/config/DbTypeConfig.java
diff --git a/changelog.md b/changelog.md
index cbec035..fba5164 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,41 @@
# changelog
+## 2.0.3
+
+- 连接方式管理放在配置文件中
+- solon更新到2.8.5
+
+
+```yaml
+# 连接方式管理, {HOST},{PORT},{DB_NAME} 表示占位符
+connect:
+ "1":
+ name: MySQL
+ driver: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://{HOST}:{PORT}/{DB_NAME}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+ serviceName: com.gitee.gen.gen.mysql.MySqlService
+ "2":
+ name: Oracle
+ driver: oracle.jdbc.driver.OracleDriver
+ url: jdbc:oracle:thin:@{HOST}:{PORT}{DB_NAME}
+ serviceName: com.gitee.gen.gen.oracle.OracleService
+ "3":
+ name: "SQL Server"
+ driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
+ url: jdbc:sqlserver://{HOST}:{PORT};DatabaseName={DB_NAME};trustServerCertificate=true
+ serviceName: com.gitee.gen.gen.sqlserver.SqlServerService
+ "4":
+ name: PostgreSQL
+ driver: org.postgresql.Driver
+ url: jdbc:postgresql://{HOST}:{PORT}/{DB_NAME}
+ serviceName: com.gitee.gen.gen.postgresql.PostgreSqlService
+ "5":
+ name: "达梦"
+ driver: dm.jdbc.driver.DmDriver
+ url: jdbc:dm://{HOST}:{PORT}/{DB_NAME}
+ serviceName: com.gitee.gen.gen.dm.DmService
+```
+
## 2.0.2
- 支持其它数据库代码生成,具体参考项目首页说明
diff --git a/gen/pom.xml b/gen/pom.xml
index 615302c..033ca42 100644
--- a/gen/pom.xml
+++ b/gen/pom.xml
@@ -7,7 +7,7 @@
org.noear
solon-parent
- 2.8.3
+ 2.8.5
diff --git a/gen/src/main/java/com/gitee/gen/config/ConnectConfig.java b/gen/src/main/java/com/gitee/gen/config/ConnectConfig.java
new file mode 100644
index 0000000..69a817e
--- /dev/null
+++ b/gen/src/main/java/com/gitee/gen/config/ConnectConfig.java
@@ -0,0 +1,53 @@
+package com.gitee.gen.config;
+
+/**
+ * @author 六如
+ */
+public class ConnectConfig {
+
+ private String name;
+ private String driver;
+ private String url;
+ private String serviceName;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDriver() {
+ return driver;
+ }
+
+ public void setDriver(String driver) {
+ this.driver = driver;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ @Override
+ public String toString() {
+ return "ConnectConfig{" +
+ "name='" + name + '\'' +
+ ", driver='" + driver + '\'' +
+ ", url='" + url + '\'' +
+ '}';
+ }
+}
diff --git a/gen/src/main/java/com/gitee/gen/config/DbTypeConfig.java b/gen/src/main/java/com/gitee/gen/config/DbTypeConfig.java
new file mode 100644
index 0000000..6fa0ceb
--- /dev/null
+++ b/gen/src/main/java/com/gitee/gen/config/DbTypeConfig.java
@@ -0,0 +1,33 @@
+package com.gitee.gen.config;
+
+import org.noear.solon.Solon;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Inject;
+
+import java.util.Map;
+
+/**
+ * @author 六如
+ */
+@Configuration
+public class DbTypeConfig {
+
+ @Inject("${connect}")
+ private Map connectConfigMap;
+
+ public static DbTypeConfig getInstance() {
+ return Solon.context().getBean(DbTypeConfig.class);
+ }
+
+ public ConnectConfig getConnectConfig(Integer type) {
+ return connectConfigMap.get(type);
+ }
+
+ public Map getConnectConfigMap() {
+ return connectConfigMap;
+ }
+
+ public void setConnectConfigMap(Map connectConfigMap) {
+ this.connectConfigMap = connectConfigMap;
+ }
+}
diff --git a/gen/src/main/java/com/gitee/gen/controller/DatasourceConfigController.java b/gen/src/main/java/com/gitee/gen/controller/DatasourceConfigController.java
index ef24f84..0dbf03b 100644
--- a/gen/src/main/java/com/gitee/gen/controller/DatasourceConfigController.java
+++ b/gen/src/main/java/com/gitee/gen/controller/DatasourceConfigController.java
@@ -2,9 +2,9 @@ package com.gitee.gen.controller;
import com.gitee.gen.common.Action;
import com.gitee.gen.common.Result;
+import com.gitee.gen.config.DbTypeConfig;
import com.gitee.gen.entity.DatasourceConfig;
import com.gitee.gen.gen.DBConnect;
-import com.gitee.gen.gen.DbType;
import com.gitee.gen.gen.GeneratorConfig;
import com.gitee.gen.gen.SQLService;
import com.gitee.gen.gen.SQLServiceFactory;
@@ -17,7 +17,6 @@ import org.noear.solon.annotation.Path;
import java.util.List;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
/**
* @author tanghc
@@ -74,8 +73,11 @@ public class DatasourceConfigController {
@Mapping("/dbtype")
public Result dbType(DatasourceConfig datasourceConfig) {
- List dbTypeShowList = Stream.of(DbType.values())
- .map(dbType -> new DbTypeShow(dbType.getDisplayName(), dbType.getType()))
+ List dbTypeShowList = DbTypeConfig.getInstance()
+ .getConnectConfigMap()
+ .entrySet()
+ .stream()
+ .map(entry -> new DbTypeShow(entry.getValue().getName(), entry.getKey()))
.collect(Collectors.toList());
return Action.ok(dbTypeShowList);
}
diff --git a/gen/src/main/java/com/gitee/gen/entity/DatasourceConfig.java b/gen/src/main/java/com/gitee/gen/entity/DatasourceConfig.java
index ae381da..42e87c5 100644
--- a/gen/src/main/java/com/gitee/gen/entity/DatasourceConfig.java
+++ b/gen/src/main/java/com/gitee/gen/entity/DatasourceConfig.java
@@ -10,7 +10,6 @@ public class DatasourceConfig {
private Integer id;
/**
* 数据库类型
- * @see com.gitee.gen.gen.DbType
*/
private Integer dbType;
/** 数据库驱动 */
@@ -217,4 +216,4 @@ public class DatasourceConfig {
", dbGroupName='" + dbGroupName + '\'' +
'}';
}
-}
\ No newline at end of file
+}
diff --git a/gen/src/main/java/com/gitee/gen/gen/DBConnect.java b/gen/src/main/java/com/gitee/gen/gen/DBConnect.java
index 0db7b33..01bd169 100644
--- a/gen/src/main/java/com/gitee/gen/gen/DBConnect.java
+++ b/gen/src/main/java/com/gitee/gen/gen/DBConnect.java
@@ -40,6 +40,7 @@ public class DBConnect {
con.close(); // 关闭连接,该连接无实际用处
} catch (SQLException e) {
e.printStackTrace();
+ ret = e.getMessage();
}
}
}
diff --git a/gen/src/main/java/com/gitee/gen/gen/DbType.java b/gen/src/main/java/com/gitee/gen/gen/DbType.java
index 2310a69..4cf118b 100644
--- a/gen/src/main/java/com/gitee/gen/gen/DbType.java
+++ b/gen/src/main/java/com/gitee/gen/gen/DbType.java
@@ -1,8 +1,11 @@
package com.gitee.gen.gen;
/**
+ * 改成配在app.yml中
+ *
* @author tanghc
*/
+@Deprecated
public enum DbType {
MYSQL(1,
@@ -18,7 +21,7 @@ public enum DbType {
SQL_SERVER(3,
"SQL Server",
"com.microsoft.sqlserver.jdbc.SQLServerDriver",
- "jdbc:sqlserver://%s:%s;DatabaseName=%s"),
+ "jdbc:sqlserver://%s:%s;DatabaseName=%s;trustServerCertificate=true"),
POSTGRE_SQL(4,
"PostgreSQL",
diff --git a/gen/src/main/java/com/gitee/gen/gen/GeneratorConfig.java b/gen/src/main/java/com/gitee/gen/gen/GeneratorConfig.java
index fcea397..0b1c103 100644
--- a/gen/src/main/java/com/gitee/gen/gen/GeneratorConfig.java
+++ b/gen/src/main/java/com/gitee/gen/gen/GeneratorConfig.java
@@ -1,6 +1,9 @@
package com.gitee.gen.gen;
+import com.gitee.gen.config.ConnectConfig;
+import com.gitee.gen.config.DbTypeConfig;
import com.gitee.gen.entity.DatasourceConfig;
+import org.noear.snack.core.utils.StringUtil;
public class GeneratorConfig {
@@ -10,6 +13,10 @@ public class GeneratorConfig {
private String dbName;
/** schema(PGSQL专用) */
private String schemaName;
+ /**
+ * 驱动class
+ */
+ private String driverClass;
/** 数据库host */
private String host;
/** 数据库端口 */
@@ -19,6 +26,7 @@ public class GeneratorConfig {
/** 数据库密码 */
private String password;
+
public static GeneratorConfig build(DatasourceConfig datasourceConfig) {
GeneratorConfig generatorConfig = new GeneratorConfig();
generatorConfig.setDbName(datasourceConfig.getDbName());
@@ -28,24 +36,26 @@ public class GeneratorConfig {
generatorConfig.setUsername(datasourceConfig.getUsername());
generatorConfig.setPassword(datasourceConfig.getPassword());
generatorConfig.setSchemaName(datasourceConfig.getSchemaName());
- return generatorConfig;
- }
-
- public String getDriverClass() {
- DbType dbType = DbType.of(this.dbType);
- if (dbType == null) {
- throw new RuntimeException("不支持数据库类型" + this.dbType + ",请在DbType.java中配置");
+ String driver = datasourceConfig.getDriverClass();
+ if (StringUtil.isEmpty(driver)) {
+ ConnectConfig connectConfig = DbTypeConfig.getInstance().getConnectConfig(datasourceConfig.getDbType());
+ driver = connectConfig.getDriver();
}
- return dbType.getDriverClass();
+ generatorConfig.setDriverClass(driver);
+ return generatorConfig;
}
public String getJdbcUrl() {
- DbType dbType = DbType.of(this.dbType);
+ ConnectConfig connectConfig = DbTypeConfig.getInstance().getConnectConfig(dbType);
if (dbType == null) {
- throw new RuntimeException("不支持数据库类型" + this.dbType + ",请在DbType.java中配置");
+ throw new RuntimeException("不支持数据库类型" + this.dbType + ",请在 app.yml 中配置");
}
- String jdbcUrl = dbType.getJdbcUrl();
- return String.format(jdbcUrl, host, port, dbName);
+ String jdbcUrl = connectConfig.getUrl();
+ // jdbc:mysql://{HOST}:{PORT}/{DB_NAME}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+ jdbcUrl = jdbcUrl.replace("{HOST}", host);
+ jdbcUrl = jdbcUrl.replace("{PORT}", String.valueOf(port));
+ jdbcUrl = jdbcUrl.replace("{DB_NAME}", dbName);
+ return jdbcUrl;
}
public String getDbName() {
@@ -64,6 +74,10 @@ public class GeneratorConfig {
this.dbType = dbType;
}
+ public void setPort(Integer port) {
+ this.port = port;
+ }
+
public String getHost() {
return host;
}
@@ -103,4 +117,12 @@ public class GeneratorConfig {
public void setSchemaName(String schemaName) {
this.schemaName = schemaName;
}
+
+ public void setDriverClass(String driverClass) {
+ this.driverClass = driverClass;
+ }
+
+ public String getDriverClass() {
+ return driverClass;
+ }
}
diff --git a/gen/src/main/java/com/gitee/gen/gen/SQLServiceFactory.java b/gen/src/main/java/com/gitee/gen/gen/SQLServiceFactory.java
index dfb22d8..95fe2f3 100644
--- a/gen/src/main/java/com/gitee/gen/gen/SQLServiceFactory.java
+++ b/gen/src/main/java/com/gitee/gen/gen/SQLServiceFactory.java
@@ -1,34 +1,28 @@
package com.gitee.gen.gen;
-import com.gitee.gen.gen.dm.DmService;
-import com.gitee.gen.gen.mysql.MySqlService;
-import com.gitee.gen.gen.oracle.OracleService;
-import com.gitee.gen.gen.postgresql.PostgreSqlService;
-import com.gitee.gen.gen.sqlserver.SqlServerService;
+import com.gitee.gen.config.ConnectConfig;
+import com.gitee.gen.config.DbTypeConfig;
+import org.noear.solon.core.util.ClassUtil;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
public class SQLServiceFactory {
- private static final Map SERVICE_CONFIG = new HashMap<>(16);
-
- static {
- SERVICE_CONFIG.put(DbType.MYSQL.getType(), new MySqlService());
- SERVICE_CONFIG.put(DbType.ORACLE.getType(), new OracleService());
- SERVICE_CONFIG.put(DbType.SQL_SERVER.getType(), new SqlServerService());
- SERVICE_CONFIG.put(DbType.POSTGRE_SQL.getType(), new PostgreSqlService());
- SERVICE_CONFIG.put(DbType.DM.getType(), new DmService());
-
- }
+ private static final Map SERVICE_CONFIG = new ConcurrentHashMap<>(16);
public static SQLService build(GeneratorConfig generatorConfig) {
- SQLService service = SERVICE_CONFIG.get(generatorConfig.getDbType());
- if (service == null) {
- throw new RuntimeException("本系统暂不支持该数据源(" + generatorConfig.getDriverClass() + ")");
- }
- return service;
+ Integer dbType = generatorConfig.getDbType();
+ return SERVICE_CONFIG.computeIfAbsent(dbType, k -> {
+ ConnectConfig connectConfig = DbTypeConfig.getInstance().getConnectConfig(dbType);
+ String className = connectConfig.getServiceName();
+ Class> aClass = ClassUtil.loadClass(className);
+ if (aClass == null) {
+ throw new RuntimeException("找不到数据库服务类:" + className);
+ }
+ return ClassUtil.newInstance(aClass);
+ });
}
}
diff --git a/gen/src/main/java/com/gitee/gen/service/DatasourceConfigService.java b/gen/src/main/java/com/gitee/gen/service/DatasourceConfigService.java
index e2d30af..f11a00a 100644
--- a/gen/src/main/java/com/gitee/gen/service/DatasourceConfigService.java
+++ b/gen/src/main/java/com/gitee/gen/service/DatasourceConfigService.java
@@ -1,7 +1,8 @@
package com.gitee.gen.service;
+import com.gitee.gen.config.ConnectConfig;
+import com.gitee.gen.config.DbTypeConfig;
import com.gitee.gen.entity.DatasourceConfig;
-import com.gitee.gen.gen.DbType;
import com.gitee.gen.mapper.DatasourceConfigMapper;
import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
@@ -27,9 +28,9 @@ public class DatasourceConfigService {
public void insert(DatasourceConfig templateConfig) {
templateConfig.setIsDeleted(0);
- DbType dbType = DbType.of(templateConfig.getDbType());
- if (dbType != null) {
- templateConfig.setDriverClass(dbType.getDriverClass());
+ ConnectConfig connectConfig = DbTypeConfig.getInstance().getConnectConfig(templateConfig.getDbType());
+ if (connectConfig != null) {
+ templateConfig.setDriverClass(connectConfig.getDriver());
}
datasourceConfigMapper.insert(templateConfig);
}
diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml
index f9403d7..722dfc5 100644
--- a/gen/src/main/resources/app.yml
+++ b/gen/src/main/resources/app.yml
@@ -56,3 +56,33 @@ solon.logging.appender:
level: INFO
enable: false #是否启用
+
+# 2.0.3新增
+# 连接方式管理, {HOST},{PORT},{DB_NAME} 表示占位符
+connect:
+ "1":
+ name: MySQL
+ driver: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://{HOST}:{PORT}/{DB_NAME}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+ serviceName: com.gitee.gen.gen.mysql.MySqlService
+ "2":
+ name: Oracle
+ driver: oracle.jdbc.driver.OracleDriver
+ url: jdbc:oracle:thin:@{HOST}:{PORT}{DB_NAME}
+ serviceName: com.gitee.gen.gen.oracle.OracleService
+ "3":
+ name: "SQL Server"
+ driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
+ url: jdbc:sqlserver://{HOST}:{PORT};DatabaseName={DB_NAME};trustServerCertificate=true
+ serviceName: com.gitee.gen.gen.sqlserver.SqlServerService
+ "4":
+ name: PostgreSQL
+ driver: org.postgresql.Driver
+ url: jdbc:postgresql://{HOST}:{PORT}/{DB_NAME}
+ serviceName: com.gitee.gen.gen.postgresql.PostgreSqlService
+ "5":
+ name: "达梦"
+ driver: dm.jdbc.driver.DmDriver
+ url: jdbc:dm://{HOST}:{PORT}/{DB_NAME}
+ serviceName: com.gitee.gen.gen.dm.DmService
+
--
Gitee
From 9b320822242befe0f20301932e1dfc32aeda212f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com>
Date: Wed, 24 Jul 2024 17:53:44 +0800
Subject: [PATCH 35/38] 2.0.4
---
changelog.md | 4 ++++
gen/pom.xml | 11 +++++++++++
.../com/gitee/gen/service/TemplateConfigService.java | 2 +-
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/changelog.md b/changelog.md
index fba5164..af225f7 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,9 @@
# changelog
+## 2.0.4
+
+- 使用jdkhttp
+
## 2.0.3
- 连接方式管理放在配置文件中
diff --git a/gen/pom.xml b/gen/pom.xml
index 033ca42..70b621a 100644
--- a/gen/pom.xml
+++ b/gen/pom.xml
@@ -27,6 +27,17 @@
org.noear
solon-api
+
+
+ org.noear
+ solon.boot.smarthttp
+
+
+
+
+
+ org.noear
+ solon.boot.jdkhttp
diff --git a/gen/src/main/java/com/gitee/gen/service/TemplateConfigService.java b/gen/src/main/java/com/gitee/gen/service/TemplateConfigService.java
index 591244c..e4b73b8 100644
--- a/gen/src/main/java/com/gitee/gen/service/TemplateConfigService.java
+++ b/gen/src/main/java/com/gitee/gen/service/TemplateConfigService.java
@@ -4,10 +4,10 @@ import com.gitee.gen.entity.TemplateConfig;
import com.gitee.gen.mapper.TemplateConfigMapper;
import com.gitee.gen.util.StringUtil;
import com.gitee.gen.util.TemplateMetaUtils;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
-import org.smartboot.http.common.utils.CollectionUtils;
import java.util.Collections;
import java.util.List;
--
Gitee
From b027cc5911bca8a734f1f0c44deecddc0c27dff7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com>
Date: Thu, 25 Jul 2024 22:16:32 +0800
Subject: [PATCH 36/38] 2.0.4
---
gen/pom.xml | 4 ++--
gen/src/main/resources/app.yml | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/gen/pom.xml b/gen/pom.xml
index 70b621a..5f411be 100644
--- a/gen/pom.xml
+++ b/gen/pom.xml
@@ -7,13 +7,13 @@
org.noear
solon-parent
- 2.8.5
+ 2.8.6
com.gitee.codegen
gen
- 2.0.2
+ 2.0.4
一款代码生成器
https://gitee.com/durcframework/code-gen
diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml
index 722dfc5..ac3e261 100644
--- a/gen/src/main/resources/app.yml
+++ b/gen/src/main/resources/app.yml
@@ -60,27 +60,27 @@ solon.logging.appender:
# 2.0.3新增
# 连接方式管理, {HOST},{PORT},{DB_NAME} 表示占位符
connect:
- "1":
+ 1:
name: MySQL
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://{HOST}:{PORT}/{DB_NAME}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
serviceName: com.gitee.gen.gen.mysql.MySqlService
- "2":
+ 2:
name: Oracle
driver: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@{HOST}:{PORT}{DB_NAME}
serviceName: com.gitee.gen.gen.oracle.OracleService
- "3":
+ 3:
name: "SQL Server"
driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://{HOST}:{PORT};DatabaseName={DB_NAME};trustServerCertificate=true
serviceName: com.gitee.gen.gen.sqlserver.SqlServerService
- "4":
+ 4:
name: PostgreSQL
driver: org.postgresql.Driver
url: jdbc:postgresql://{HOST}:{PORT}/{DB_NAME}
serviceName: com.gitee.gen.gen.postgresql.PostgreSqlService
- "5":
+ 5:
name: "达梦"
driver: dm.jdbc.driver.DmDriver
url: jdbc:dm://{HOST}:{PORT}/{DB_NAME}
--
Gitee
From 7bfb277ba1d21bd6881835d7d452bcfe7baedbd0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com>
Date: Thu, 10 Oct 2024 11:34:33 +0800
Subject: [PATCH 37/38] 2.0.5
---
changelog.md | 4 ++++
front/public/velocity/java.json | 4 ++++
gen/src/main/java/com/gitee/gen/gen/TableDefinition.java | 9 +++++++++
3 files changed, 17 insertions(+)
diff --git a/changelog.md b/changelog.md
index af225f7..45d4b27 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,9 @@
# changelog
+## 2.0.5
+
+- 新增`${table.columnCount}`变量,返回表字段数量
+
## 2.0.4
- 使用jdkhttp
diff --git a/front/public/velocity/java.json b/front/public/velocity/java.json
index 179345a..5e60bdf 100644
--- a/front/public/velocity/java.json
+++ b/front/public/velocity/java.json
@@ -167,6 +167,10 @@
{
"expression": "${table.schema}",
"text": "PostgreSQL中的Schema"
+ },
+ {
+ "expression": "${table.columnCount}",
+ "text": "字段数量"
}
]
},
diff --git a/gen/src/main/java/com/gitee/gen/gen/TableDefinition.java b/gen/src/main/java/com/gitee/gen/gen/TableDefinition.java
index e8bac05..6cf9c61 100644
--- a/gen/src/main/java/com/gitee/gen/gen/TableDefinition.java
+++ b/gen/src/main/java/com/gitee/gen/gen/TableDefinition.java
@@ -39,6 +39,15 @@ public class TableDefinition {
this.tableName = tableName;
}
+ /**
+ * 返回字段数量
+ *
+ * @return 字段数量,>=0
+ */
+ public int getColumnCount() {
+ return columnDefinitions.size();
+ }
+
/**
* 是否有时间字段
* @return true:有
--
Gitee
From c078f7eb5ef7c149586c42c022e97021bcb409f8 Mon Sep 17 00:00:00 2001
From: RGK
Date: Thu, 26 Dec 2024 13:52:59 +0800
Subject: [PATCH 38/38] =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=AF=BC=E5=85=A5?=
=?UTF-8?q?=E6=A8=A1=E6=9D=BF=E8=A7=A3=E6=9E=90=E5=85=83=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?-=E5=A6=82=E6=9E=9C=E8=A1=A8=E8=BE=BE=E5=BC=8F=E4=B8=AD?=
=?UTF-8?q?=E5=AD=98=E5=9C=A8=E9=80=97=E5=8F=B7(,)=EF=BC=8C=E4=BC=9A?=
=?UTF-8?q?=E5=AF=BC=E8=87=B4=E8=A7=A3=E6=9E=90=E5=87=BA=E7=9A=84=E5=85=83?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=A2=E5=A4=B1=E9=80=97=E5=8F=B7=E5=90=8E?=
=?UTF-8?q?=E9=9D=A2=E9=83=A8=E5=88=86=E6=AF=94=E5=A6=82:=20##=20filename?=
=?UTF-8?q?=3D$\{context.javaBeanName\}Client.java,=20folder=3Dsrc/main/ja?=
=?UTF-8?q?va/\{context.packageName.replace('.','/')\}/mapper?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/gitee/gen/util/TemplateMetaUtils.java | 43 +++++++++++++++++--
1 file changed, 39 insertions(+), 4 deletions(-)
diff --git a/gen/src/main/java/com/gitee/gen/util/TemplateMetaUtils.java b/gen/src/main/java/com/gitee/gen/util/TemplateMetaUtils.java
index 7dc5384..feba0d4 100644
--- a/gen/src/main/java/com/gitee/gen/util/TemplateMetaUtils.java
+++ b/gen/src/main/java/com/gitee/gen/util/TemplateMetaUtils.java
@@ -31,11 +31,46 @@ public final class TemplateMetaUtils {
* 解析元数据信息
*/
public static Map parseMetaRow(String row) {
+ char[] charArray = row.toCharArray();
+
Map data = new HashMap<>();
- String[] paris = row.split("\\s*,\\s*");
- for (String item : paris) {
- String[] kv = item.split("=");
- data.put(kv[0].trim(), kv.length == 1 ? null : kv[1].trim());
+
+ StringBuilder kvBuilder = new StringBuilder();
+ // 剩余未闭合表达式数量
+ int leftExpr = 0;
+ for (int i = 0, len = charArray.length, end = len - 1; i < len; i++) {
+ char c = charArray[i];
+ boolean kvEnd = false;
+ if (i == end) {
+ kvBuilder.append(c);
+ kvEnd = true;
+ } else if (',' == c && leftExpr == 0) {
+ kvEnd = true;
+ }
+
+ if (kvEnd) {
+ String[] kv = kvBuilder.toString().trim().split("=");
+ data.put(kv[0].trim(), kv.length == 1 ? null : kv[1].trim());
+ kvBuilder = new StringBuilder();
+ continue;
+ }
+
+ kvBuilder.append(c);
+ switch (c) {
+ case '{':
+ case '(':
+ leftExpr++;
+ break;
+ case '}':
+ case ')':
+ leftExpr--;
+ break;
+ default:
+ break;
+ }
+ }
+ if (leftExpr > 0) {
+ throw new RuntimeException("读取元数据失败,有" + leftExpr + "个表达式未闭合");
}
return data;
}
--
Gitee