From 423e18e27cbd620275f0d1be74a7e611b33624d4 Mon Sep 17 00:00:00 2001 From: thc <8775@163.com> Date: Tue, 26 Mar 2024 14:34:36 +0800 Subject: [PATCH 01/38] add ${context.dbNameCamel} ${context.dbNameClean} --- front/public/velocity/java.json | 10 +++++++++- .../main/java/com/gitee/gen/gen/SQLContext.java | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/front/public/velocity/java.json b/front/public/velocity/java.json index f04a82e..179345a 100644 --- a/front/public/velocity/java.json +++ b/front/public/velocity/java.json @@ -80,7 +80,15 @@ }, { "expression": "${context.dbName}", - "text": "数据库名" + "text": "数据库名,如:shop_order" + }, + { + "expression": "${context.dbNameCamel}", + "text": "数据库名驼峰,如:shopOrder" + }, + { + "expression": "${context.dbNameClean}", + "text": "数据库名,无符号并小写,如:shoporder" }, { "expression": "${context.packageName}", diff --git a/gen/src/main/java/com/gitee/gen/gen/SQLContext.java b/gen/src/main/java/com/gitee/gen/gen/SQLContext.java index d1f1dbc..6aa03f7 100644 --- a/gen/src/main/java/com/gitee/gen/gen/SQLContext.java +++ b/gen/src/main/java/com/gitee/gen/gen/SQLContext.java @@ -58,6 +58,20 @@ public class SQLContext { this.javaPkColumn = this.tableDefinition.getPkColumn(); } + public String getDbNameCamel() { + return FieldUtil.underlineFilter(getDbName()); + } + + /** + * 干净的库名(移除下划线,横杠,点)并小写 + * @return + */ + public String getDbNameClean() { + return getDbName().replace("_", "") + .replace("-", "") + .replace(".", "").toLowerCase(); + } + public String getDatetime() { return localDateTime.format(DATE_TIME_FORMATTER); } -- Gitee From e6175dd66edc7ad6f515a603756004eff8b3bde1 Mon Sep 17 00:00:00 2001 From: thc <8775@163.com> Date: Tue, 9 Apr 2024 09:30:04 +0800 Subject: [PATCH 02/38] update --- readme.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/readme.md b/readme.md index 0933a84..c132aaa 100644 --- a/readme.md +++ b/readme.md @@ -84,6 +84,31 @@ docker run --name gen --restart=always \ - 运行`gen`下的`com.gitee.gen.App`(solon-web工程) - 运行`front`下的前端项目,详见:[readme](./front/README.md) +## 使用Mysql存储 + + +- 创建数据库, [SQL文件](https://gitee.com/durcframework/code-gen/blob/master/db/mysql.sql) +- 打开app.yml文件 +- 注释下面内容 + +``` +#DATASOURCE_URL: "jdbc:sqlite:" +#DATASOURCE_DRIVE: org.sqlite.JDBC +#DATASOURCE_USERNAME: +#DATASOURCE_PASSWORD: +``` + +- 打开mysql配置: + +``` +DATASOURCE_URL: jdbc:mysql://localhost:3306/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai +DATASOURCE_DRIVE: com.mysql.cj.jdbc.Driver +DATASOURCE_USERNAME: root +DATASOURCE_PASSWORD: root +``` + +修改用户名密码,重启应用 + ## 参与贡献 欢迎贡献代码,完善功能,PR请提交到`pr`分支 -- Gitee From 1e67abee5ea87b38f8b22e016e7dac7f219fdb70 Mon Sep 17 00:00:00 2001 From: thc <8775@163.com> Date: Tue, 9 Apr 2024 09:37:45 +0800 Subject: [PATCH 03/38] 2.0.1 --- changelog.md | 5 +++++ gen/pom.xml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index dc4e393..002d865 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # changelog +## 2.0.1 + +- 新增`${context.dbNameCamel}` 数据库名驼峰,如:shopOrder +- 新增`${context.dbNameClean}` 数据库名驼峰,如:shoporder + ## 2.0.0 - 【新增】底层框架改为solon,启动更快,内存更小(64M) diff --git a/gen/pom.xml b/gen/pom.xml index 0bd3cb4..744a034 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -13,7 +13,7 @@ com.gitee.codegen gen - 2.0 + 2.0.1 一款代码生成器 https://gitee.com/durcframework/code-gen -- Gitee From 28449e3b9de0154b1f1cb40617aaffdd00183f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 10:49:40 +0800 Subject: [PATCH 04/38] 2.0.1 --- gen/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gen/pom.xml b/gen/pom.xml index 744a034..8a7d294 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -87,11 +87,11 @@ 3.34.0 - + junit junit -- Gitee From c9074e06d2170117094ae7edb9f14f609342b0fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 13:46:57 +0800 Subject: [PATCH 05/38] 2.0.1 --- gen/pom.xml | 4 ++-- gen/src/main/assembly/assembly-zip.xml | 12 +++++++++++ gen/src/main/assembly/ext.md | 1 + readme.md | 30 +++++++++++++++++++++++--- 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 gen/src/main/assembly/ext.md diff --git a/gen/pom.xml b/gen/pom.xml index 8a7d294..744a034 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -87,11 +87,11 @@ 3.34.0 - + junit junit diff --git a/gen/src/main/assembly/assembly-zip.xml b/gen/src/main/assembly/assembly-zip.xml index 062fb35..b9b3471 100644 --- a/gen/src/main/assembly/assembly-zip.xml +++ b/gen/src/main/assembly/assembly-zip.xml @@ -31,6 +31,18 @@ 0644 + + + src/main/assembly + + ext.md + + ext + 0644 + + + + src/main/resources diff --git a/gen/src/main/assembly/ext.md b/gen/src/main/assembly/ext.md new file mode 100644 index 0000000..8c5fa27 --- /dev/null +++ b/gen/src/main/assembly/ext.md @@ -0,0 +1 @@ +将数据库驱动放入该文件夹下 diff --git a/readme.md b/readme.md index c132aaa..993ca88 100644 --- a/readme.md +++ b/readme.md @@ -61,11 +61,34 @@ clone代码,然后执行`docker-build.sh`脚本 ```shell docker run --name gen --restart=always \ -p 6969:6969 \ - -e JAVA_OPTS="-server -Xms64m -Xmx64m -DLOCAL_DB=/opt/gen/gen.db" \ + -e JAVA_OPTS="-server -Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -Xms64m -Xmx64m -DLOCAL_DB=/opt/gen/gen.db" \ -v /opt/gen/:/opt/gen/ \ + -v /opt/gen/conf/:/gen/conf/ \ + -v /opt/gen/ext:/gen/ext \ -d <镜像ID> ``` +## 其它数据库支持 + + +默认支持mysql数据库,如果要支持其它数据库,如Oracle,步骤如下: + +将驱动放入ext文件夹下 + +- docker直接重启服务 + +- 本地运行 + +设置环境变量JAVA_HOME,指向java安装目录 + +编辑`run.sh`文件,添加启动参数:`-Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:./ext` + +添加后如下: + +`java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:./ext -Dsolon.config.add=./conf/app.yml -Duser.timezone=Asia/Shanghai -jar -Xms64m -Xmx64m gen.jar` + +执行`sh run.sh`启动 + ## 其它 - [快速搭建SpringBoot+Mybatis应用](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=2478942&doc_id=27724) @@ -86,6 +109,7 @@ docker run --name gen --restart=always \ ## 使用Mysql存储 +默认使用SQLITE3存储,如果要使用mysql存储,需要做如下配置 - 创建数据库, [SQL文件](https://gitee.com/durcframework/code-gen/blob/master/db/mysql.sql) - 打开app.yml文件 @@ -98,7 +122,7 @@ docker run --name gen --restart=always \ #DATASOURCE_PASSWORD: ``` -- 打开mysql配置: +- 打开mysql配置,并修改用户名密码 ``` DATASOURCE_URL: jdbc:mysql://localhost:3306/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai @@ -107,7 +131,7 @@ DATASOURCE_USERNAME: root DATASOURCE_PASSWORD: root ``` -修改用户名密码,重启应用 +执行`sh run.sh`启动 ## 参与贡献 -- Gitee From 26536b3c3017069623d940d9e4666f006c3a8234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 15:14:40 +0800 Subject: [PATCH 06/38] 2.0.1 --- Dockerfile | 3 ++- .../main/java/com/gitee/gen/config/Config.java | 9 +++++++++ .../com/gitee/gen/service/UpgradeService.java | 9 ++++++--- gen/src/main/resources/app.yml | 16 +++++++++++----- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 89e5bee..59b2037 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,4 +11,5 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Dsolon.config.add=/gen/conf/app.yml -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] +ENV CONFIG_FILE="/gen/conf/app.yml" +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index 4a63a42..f24b780 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -7,6 +7,7 @@ import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.lang.StringUtils; import org.noear.solon.Solon; import org.noear.solon.annotation.Bean; +import org.noear.solon.annotation.Condition; import org.noear.solon.annotation.Configuration; import org.noear.solon.annotation.Init; import org.noear.solon.annotation.Inject; @@ -28,6 +29,7 @@ public class Config { //此下的 db1 与 mybatis.db1 将对应在起来 //可以用 @Db("db1") 注入mapper //typed=true,表示默认数据源。@Db 可不带名字注入 @Bean(name = "db1", typed = true) + @Condition(onProperty="${USE_DBMS} = false") public DataSource db1(@Inject("${gen.db1}") BasicDataSource ds) { if (ds.getDriverClassName().contains("sqlite")) { String url = ds.getUrl(); @@ -36,6 +38,13 @@ public class Config { return ds; } + @Bean(name = "db1", typed = true) + @Condition(onProperty="${USE_DBMS} = true") + public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds) { + log.info("使用DBMS,url:{}", ds.getUrl()); + return ds; + } + //调整 db1 的配置,或添加插件 (配置可以解决的,不需要这块代码) //@Bean //public void db1_cfg(@Db("db1") org.apache.ibatis.session.Configuration cfg) { diff --git a/gen/src/main/java/com/gitee/gen/service/UpgradeService.java b/gen/src/main/java/com/gitee/gen/service/UpgradeService.java index 65f6aa1..f5a7720 100644 --- a/gen/src/main/java/com/gitee/gen/service/UpgradeService.java +++ b/gen/src/main/java/com/gitee/gen/service/UpgradeService.java @@ -50,7 +50,10 @@ public class UpgradeService { @Inject private SystemConfigService systemConfigService; - @Inject("${gen.db1.driverClassName}") + @Inject("${USE_DBMS:false}") + private boolean useDbms; + + @Inject("${gen.db2.driverClassName}") private String driverClassName; @Inject("${gen.db-name:gen}") @@ -298,11 +301,11 @@ public class UpgradeService { } private boolean isMysql() { - return this.driverClassName.contains("mysql"); + return useDbms && this.driverClassName.contains("mysql"); } private boolean isDm() { - return this.driverClassName.contains("dm"); + return useDbms && this.driverClassName.contains("dm"); } } diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 1909894..3a69516 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -3,7 +3,7 @@ solon.app: server: port: 6969 - +USE_DBMS: true # sqlite3 #LOCAL_DB: ${user.home}/gen.db @@ -13,10 +13,10 @@ DATASOURCE_USERNAME: DATASOURCE_PASSWORD: # mysql -#DATASOURCE_URL: jdbc:mysql://localhost:3306/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai -#DATASOURCE_DRIVE: com.mysql.cj.jdbc.Driver -#DATASOURCE_USERNAME: root -#DATASOURCE_PASSWORD: root +DB_HOST: localhost:3306 +DB_DRIVE: com.mysql.cj.jdbc.Driver +DB_USERNAME: root +DB_PASSWORD: root # 配置数据源 gen.db1: @@ -25,6 +25,12 @@ gen.db1: userName: ${DATASOURCE_USERNAME} password: ${DATASOURCE_PASSWORD} +gen.db2: + url: jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai + driverClassName: ${DB_DRIVE} + userName: ${DB_USERNAME} + password: ${DB_PASSWORD} + # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) mybatis.db1: mappers: #支持包名 或 类名(大写开头 或 *)或 xml(.xml结尾)//支持 ** 或 * 占位符 -- Gitee From 8d24c3ddba2886a56bd3d9a69415ec54d9ee7bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 16:09:26 +0800 Subject: [PATCH 07/38] 2.0.1 --- gen/src/main/java/com/gitee/gen/config/Config.java | 1 + gen/src/main/resources/app.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index f24b780..fa4775c 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -35,6 +35,7 @@ public class Config { String url = ds.getUrl(); ds.setUrl(url + UpgradeService.getLocalDbPath()); } + log.info("使用本地数据库,url:{}", ds.getUrl()); return ds; } diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 3a69516..4746876 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -3,7 +3,7 @@ solon.app: server: port: 6969 -USE_DBMS: true +USE_DBMS: false # sqlite3 #LOCAL_DB: ${user.home}/gen.db -- Gitee From 2a075bc31ede5a9147a0e09b06805f54489b70ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 19:30:58 +0800 Subject: [PATCH 08/38] 2.0.1 --- Dockerfile | 9 ++++++++- gen/pom.xml | 2 +- gen/src/main/java/com/gitee/gen/config/Config.java | 9 +++++++-- gen/src/main/resources/app.yml | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 59b2037..af495ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,4 +12,11 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" ENV CONFIG_FILE="/gen/conf/app.yml" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] +ENV USE_DBMS="false" +ENV DB_HOST="localhost:3306" +ENV DB_USERNAME="gen" +ENV DB_PASSWORD="12345678" +ENV DB_URL="jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai" +ENV DB_DRIVE="com.mysql.cj.jdbc.Driver" + +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -DUSE_DBMS=$USE_DBMS -DDB_URL=$DB_URL -DDB_USERNAME=$DB_USERNAME -DDB_PASSWORD=$DB_PASSWORD -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] diff --git a/gen/pom.xml b/gen/pom.xml index 744a034..c729b47 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 2.6.5 + 2.7.3 diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index fa4775c..0013574 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -41,8 +41,13 @@ public class Config { @Bean(name = "db1", typed = true) @Condition(onProperty="${USE_DBMS} = true") - public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds) { - log.info("使用DBMS,url:{}", ds.getUrl()); + public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds, @Inject("${DB_HOST}") String dbHost) { + String url = ds.getUrl(); + if (StringUtils.isNotBlank(dbHost)) { + url = url.replace("${DB_HOST}", dbHost); + ds.setUrl(url); + } + log.info("使用DBMS存储数据,url={}", ds.getUrl()); return ds; } diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 4746876..63030c1 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -14,6 +14,7 @@ DATASOURCE_PASSWORD: # mysql DB_HOST: localhost:3306 +DB_URL: jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai DB_DRIVE: com.mysql.cj.jdbc.Driver DB_USERNAME: root DB_PASSWORD: root @@ -26,7 +27,7 @@ gen.db1: password: ${DATASOURCE_PASSWORD} gen.db2: - url: jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai + url: ${DB_URL} driverClassName: ${DB_DRIVE} userName: ${DB_USERNAME} password: ${DB_PASSWORD} -- Gitee From c81d7b66c1363ec3af6703540637573c39c13687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 19:44:16 +0800 Subject: [PATCH 09/38] 2.0.1 --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index af495ea..242e36e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,4 +19,6 @@ ENV DB_PASSWORD="12345678" ENV DB_URL="jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai" ENV DB_DRIVE="com.mysql.cj.jdbc.Driver" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -DUSE_DBMS=$USE_DBMS -DDB_URL=$DB_URL -DDB_USERNAME=$DB_USERNAME -DDB_PASSWORD=$DB_PASSWORD -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] +ENV JVM_PARAMS="-Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -DUSE_DBMS=$USE_DBMS -DDB_URL=$DB_URL -DDB_USERNAME=$DB_USERNAME -DDB_PASSWORD=$DB_PASSWORD -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" + +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS $JVM_PARAMS -jar /gen/gen.jar" ] -- Gitee From 3ba076c8a4d37ff5695899ccfced9122ac6bc533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 19:57:35 +0800 Subject: [PATCH 10/38] 2.0.1 --- Dockerfile | 9 +------ .../java/com/gitee/gen/config/Config.java | 8 +++--- gen/src/main/resources/app.yml | 25 ++++++++++--------- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 242e36e..3b75fb9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,13 +12,6 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" ENV CONFIG_FILE="/gen/conf/app.yml" -ENV USE_DBMS="false" -ENV DB_HOST="localhost:3306" -ENV DB_USERNAME="gen" -ENV DB_PASSWORD="12345678" -ENV DB_URL="jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai" -ENV DB_DRIVE="com.mysql.cj.jdbc.Driver" - -ENV JVM_PARAMS="-Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -DUSE_DBMS=$USE_DBMS -DDB_URL=$DB_URL -DDB_USERNAME=$DB_USERNAME -DDB_PASSWORD=$DB_PASSWORD -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" +ENV JVM_PARAMS="-Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS $JVM_PARAMS -jar /gen/gen.jar" ] diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index 0013574..e373553 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -29,7 +29,7 @@ public class Config { //此下的 db1 与 mybatis.db1 将对应在起来 //可以用 @Db("db1") 注入mapper //typed=true,表示默认数据源。@Db 可不带名字注入 @Bean(name = "db1", typed = true) - @Condition(onProperty="${USE_DBMS} = false") + @Condition(onProperty="${db.enable} = false") public DataSource db1(@Inject("${gen.db1}") BasicDataSource ds) { if (ds.getDriverClassName().contains("sqlite")) { String url = ds.getUrl(); @@ -40,11 +40,11 @@ public class Config { } @Bean(name = "db1", typed = true) - @Condition(onProperty="${USE_DBMS} = true") - public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds, @Inject("${DB_HOST}") String dbHost) { + @Condition(onProperty="${db.enable} = true") + public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds, @Inject("${db.host}") String dbHost) { String url = ds.getUrl(); if (StringUtils.isNotBlank(dbHost)) { - url = url.replace("${DB_HOST}", dbHost); + url = url.replace("${db.host}", dbHost); ds.setUrl(url); } log.info("使用DBMS存储数据,url={}", ds.getUrl()); diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 63030c1..4b4dbed 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -3,7 +3,6 @@ solon.app: server: port: 6969 -USE_DBMS: false # sqlite3 #LOCAL_DB: ${user.home}/gen.db @@ -12,13 +11,6 @@ DATASOURCE_DRIVE: org.sqlite.JDBC DATASOURCE_USERNAME: DATASOURCE_PASSWORD: -# mysql -DB_HOST: localhost:3306 -DB_URL: jdbc:mysql://${DB_HOST}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai -DB_DRIVE: com.mysql.cj.jdbc.Driver -DB_USERNAME: root -DB_PASSWORD: root - # 配置数据源 gen.db1: url: ${DATASOURCE_URL} @@ -26,11 +18,20 @@ gen.db1: userName: ${DATASOURCE_USERNAME} password: ${DATASOURCE_PASSWORD} +# mysql +db: + enable: true + host: localhost:3306 + url: jdbc:mysql://${db.host}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai + drive: com.mysql.cj.jdbc.Driver + username: + password: + gen.db2: - url: ${DB_URL} - driverClassName: ${DB_DRIVE} - userName: ${DB_USERNAME} - password: ${DB_PASSWORD} + url: ${db.url} + driverClassName: ${db.drive} + userName: ${db.username} + password: ${db.password} # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) mybatis.db1: -- Gitee From 2bc021d82957f673102e37091f68bb2d3bea74d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 20:13:20 +0800 Subject: [PATCH 11/38] 2.0.1 --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3b75fb9..3fb00ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,5 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" ENV CONFIG_FILE="/gen/conf/app.yml" -ENV JVM_PARAMS="-Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS $JVM_PARAMS -jar /gen/gen.jar" ] +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] -- Gitee From d281c267908f609d2b3aa0fc49c310503bc39837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 20:22:24 +0800 Subject: [PATCH 12/38] 2.0.1 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3fb00ea..3fa28f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,6 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" -ENV CONFIG_FILE="/gen/conf/app.yml" +ENV CONFIG_FILE="/opt/gen/conf/app.yml" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/lib/ext:/opt/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] -- Gitee From f7437abb758de998065a217d3c5ef5f824d5439d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 20:53:52 +0800 Subject: [PATCH 13/38] 2.0.1 --- gen/src/main/resources/app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 4b4dbed..f746341 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -20,7 +20,7 @@ gen.db1: # mysql db: - enable: true + enable: false host: localhost:3306 url: jdbc:mysql://${db.host}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai drive: com.mysql.cj.jdbc.Driver -- Gitee From a1a066d047dc2de894a4f09b686e6cb0deb3f238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 20:58:05 +0800 Subject: [PATCH 14/38] 2.0.1 --- gen/src/main/resources/app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index f746341..3b31401 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -30,7 +30,7 @@ db: gen.db2: url: ${db.url} driverClassName: ${db.drive} - userName: ${db.username} + username: ${db.username} password: ${db.password} # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) -- Gitee From defbb1ae0f92f7f793ce7fceb4e84fb84c0f9611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 10 Apr 2024 21:16:51 +0800 Subject: [PATCH 15/38] 2.0.1 --- gen/src/main/resources/app.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 3b31401..c8d0b84 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -24,13 +24,13 @@ db: host: localhost:3306 url: jdbc:mysql://${db.host}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai drive: com.mysql.cj.jdbc.Driver - username: - password: + username: a + password: b gen.db2: url: ${db.url} driverClassName: ${db.drive} - username: ${db.username} + userName: ${db.username} password: ${db.password} # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) -- Gitee From ee20ba122ffaa96277e475dd9ba2e62400583a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Tue, 18 Jun 2024 11:31:57 +0800 Subject: [PATCH 16/38] 2.0.2 --- Dockerfile | 3 +- gen/pom.xml | 4 +-- .../java/com/gitee/gen/config/Config.java | 14 ++++---- .../com/gitee/gen/service/UpgradeService.java | 6 +++- gen/src/main/resources/app.yml | 33 ++++++++----------- readme.md | 28 +++++++--------- 6 files changed, 39 insertions(+), 49 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3fa28f8..9b49c3d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,5 +12,6 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" ENV CONFIG_FILE="/opt/gen/conf/app.yml" +ENV LOCAL_DB_PATH="/opt/gen/gen.db" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/lib/ext:/opt/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -DLOCAL_DB=$LOCAL_DB_PATH -Djava.ext.dirs=$JAVA_HOME/lib/ext:/opt/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] diff --git a/gen/pom.xml b/gen/pom.xml index c729b47..615302c 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -7,13 +7,13 @@ org.noear solon-parent - 2.7.3 + 2.8.3 com.gitee.codegen gen - 2.0.1 + 2.0.2 一款代码生成器 https://gitee.com/durcframework/code-gen diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index e373553..ff8595e 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -29,7 +29,7 @@ public class Config { //此下的 db1 与 mybatis.db1 将对应在起来 //可以用 @Db("db1") 注入mapper //typed=true,表示默认数据源。@Db 可不带名字注入 @Bean(name = "db1", typed = true) - @Condition(onProperty="${db.enable} = false") + @Condition(onProperty="${dbms.enable} = false") public DataSource db1(@Inject("${gen.db1}") BasicDataSource ds) { if (ds.getDriverClassName().contains("sqlite")) { String url = ds.getUrl(); @@ -40,13 +40,8 @@ public class Config { } @Bean(name = "db1", typed = true) - @Condition(onProperty="${db.enable} = true") - public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds, @Inject("${db.host}") String dbHost) { - String url = ds.getUrl(); - if (StringUtils.isNotBlank(dbHost)) { - url = url.replace("${db.host}", dbHost); - ds.setUrl(url); - } + @Condition(onProperty="${dbms.enable} = true") + public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds) { log.info("使用DBMS存储数据,url={}", ds.getUrl()); return ds; } @@ -64,6 +59,9 @@ public class Config { initStaticFile(); } + /** + * 初始化静态资源文件 + */ private static void initStaticFile() { String frontLocation = Solon.context().cfg().get("gen.front-location", ""); String frontRoot; diff --git a/gen/src/main/java/com/gitee/gen/service/UpgradeService.java b/gen/src/main/java/com/gitee/gen/service/UpgradeService.java index f5a7720..f37ec8f 100644 --- a/gen/src/main/java/com/gitee/gen/service/UpgradeService.java +++ b/gen/src/main/java/com/gitee/gen/service/UpgradeService.java @@ -50,7 +50,7 @@ public class UpgradeService { @Inject private SystemConfigService systemConfigService; - @Inject("${USE_DBMS:false}") + @Inject("${dbms.enable:false}") private boolean useDbms; @Inject("${gen.db2.driverClassName}") @@ -66,6 +66,10 @@ public class UpgradeService { } public void initDatabase() { + if (useDbms) { + log.info("使用DBMS,跳过sqlit3文件初始化"); + return; + } File dbFile = getDbFile(); if (!dbFile.exists()) { try { diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index c8d0b84..0d06fbf 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -6,32 +6,25 @@ server: # sqlite3 #LOCAL_DB: ${user.home}/gen.db -DATASOURCE_URL: "jdbc:sqlite:" -DATASOURCE_DRIVE: org.sqlite.JDBC -DATASOURCE_USERNAME: -DATASOURCE_PASSWORD: - -# 配置数据源 gen.db1: - url: ${DATASOURCE_URL} - driverClassName: ${DATASOURCE_DRIVE} - userName: ${DATASOURCE_USERNAME} - password: ${DATASOURCE_PASSWORD} + url: "jdbc:sqlite:" + driverClassName: org.sqlite.JDBC + userName: + password: # mysql -db: - enable: false +dbms: + enable: true host: localhost:3306 - url: jdbc:mysql://${db.host}/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai - drive: com.mysql.cj.jdbc.Driver - username: a - password: b + database: gen + username: root + password: root gen.db2: - url: ${db.url} - driverClassName: ${db.drive} - userName: ${db.username} - password: ${db.password} + url: jdbc:mysql://${dbms.host}/${dbms.database}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai + driverClassName: com.mysql.cj.jdbc.Driver + userName: ${dbms.username} + password: ${dbms.password} # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) mybatis.db1: diff --git a/readme.md b/readme.md index 993ca88..d080392 100644 --- a/readme.md +++ b/readme.md @@ -41,7 +41,6 @@ ```shell docker run --name gen --restart=always \ -p 6969:6969 \ - -e JAVA_OPTS="-server -Xms64m -Xmx64m -DLOCAL_DB=/opt/gen/gen.db" \ -v /opt/gen/:/opt/gen/ \ -d registry.cn-hangzhou.aliyuncs.com/tanghc/gen:latest ``` @@ -61,7 +60,6 @@ clone代码,然后执行`docker-build.sh`脚本 ```shell docker run --name gen --restart=always \ -p 6969:6969 \ - -e JAVA_OPTS="-server -Djava.ext.dirs=$JAVA_HOME/lib/ext:/gen/ext -Xms64m -Xmx64m -DLOCAL_DB=/opt/gen/gen.db" \ -v /opt/gen/:/opt/gen/ \ -v /opt/gen/conf/:/gen/conf/ \ -v /opt/gen/ext:/gen/ext \ @@ -113,22 +111,18 @@ docker run --name gen --restart=always \ - 创建数据库, [SQL文件](https://gitee.com/durcframework/code-gen/blob/master/db/mysql.sql) - 打开app.yml文件 -- 注释下面内容 -``` -#DATASOURCE_URL: "jdbc:sqlite:" -#DATASOURCE_DRIVE: org.sqlite.JDBC -#DATASOURCE_USERNAME: -#DATASOURCE_PASSWORD: -``` - -- 打开mysql配置,并修改用户名密码 - -``` -DATASOURCE_URL: jdbc:mysql://localhost:3306/gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai -DATASOURCE_DRIVE: com.mysql.cj.jdbc.Driver -DATASOURCE_USERNAME: root -DATASOURCE_PASSWORD: root +- 修改如下配置 + +```yaml +dbms: + # 设置为true + enable: true + # 设置数据库地址,库名,连接账号 + host: localhost:3306 + database: gen + username: root + password: root ``` 执行`sh run.sh`启动 -- Gitee From 1a0093527ab0336f751ca7c231f5609160f4c4f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Tue, 18 Jun 2024 11:37:18 +0800 Subject: [PATCH 17/38] 2.0.2 --- gen/pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gen/pom.xml b/gen/pom.xml index 615302c..c5ce1e4 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -87,11 +87,11 @@ 3.34.0 - - mysql - mysql-connector-java - 8.0.28 - + + + + + junit junit -- Gitee From 002f5e518b3322e444fc4ae6c1400711f975d959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Tue, 18 Jun 2024 19:21:01 +0800 Subject: [PATCH 18/38] 2.0.2 --- gen/src/main/resources/app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 0d06fbf..91b4cad 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -14,7 +14,7 @@ gen.db1: # mysql dbms: - enable: true + enable: false host: localhost:3306 database: gen username: root -- Gitee From dc7f7e0cf87f948b6a6e347201c29d849c8d9f57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Tue, 18 Jun 2024 19:28:32 +0800 Subject: [PATCH 19/38] 2.0.2 --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9b49c3d..dc93d60 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,8 @@ ADD dist/gen /gen/ # set jvm ENV JAVA_OPTS="-server -Xmx64m -Xms64m" -ENV CONFIG_FILE="/opt/gen/conf/app.yml" ENV LOCAL_DB_PATH="/opt/gen/gen.db" +ENV CONFIG_FILE="/gen/conf/app.yml" +ENV GEN_EXT_PATH="/gen/ext" -ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -DLOCAL_DB=$LOCAL_DB_PATH -Djava.ext.dirs=$JAVA_HOME/lib/ext:/opt/gen/ext -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] +ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -DLOCAL_DB=$LOCAL_DB_PATH -Djava.ext.dirs=$JAVA_HOME/lib/ext:$GEN_EXT_PATH -Dsolon.config.add=$CONFIG_FILE -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar /gen/gen.jar" ] -- Gitee From b02cc0d3e2b9bff16c682837bde8470718c0cc1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Tue, 18 Jun 2024 22:57:04 +0800 Subject: [PATCH 20/38] 2.0.2 --- gen/src/main/resources/app.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 91b4cad..7aabb17 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -15,10 +15,10 @@ gen.db1: # mysql dbms: enable: false - host: localhost:3306 +# host: localhost:3306 database: gen - username: root - password: root +# username: root +# password: root gen.db2: url: jdbc:mysql://${dbms.host}/${dbms.database}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai -- Gitee From 9e5aa5a241d78b42800e0203c923099ca3f62a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Tue, 18 Jun 2024 23:10:16 +0800 Subject: [PATCH 21/38] 2.0.2 --- gen/src/main/java/com/gitee/gen/config/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index ff8595e..45a4110 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -42,7 +42,7 @@ public class Config { @Bean(name = "db1", typed = true) @Condition(onProperty="${dbms.enable} = true") public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds) { - log.info("使用DBMS存储数据,url={}", ds.getUrl()); + log.info("使用DBMS存储数据,url={}, user={}, pwd={}", ds.getUrl(), ds.getUsername(), ds.getPassword()); return ds; } -- Gitee From 91fb5645c9023ba44d7cce50ac23b9bda236e02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 19 Jun 2024 01:39:48 +0800 Subject: [PATCH 22/38] 2.0.2 --- gen/pom.xml | 10 +++++----- gen/src/main/java/com/gitee/gen/config/Config.java | 2 +- readme.md | 13 +++++++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/gen/pom.xml b/gen/pom.xml index c5ce1e4..615302c 100644 --- a/gen/pom.xml +++ b/gen/pom.xml @@ -87,11 +87,11 @@ 3.34.0 - - - - - + + mysql + mysql-connector-java + 8.0.28 + junit junit diff --git a/gen/src/main/java/com/gitee/gen/config/Config.java b/gen/src/main/java/com/gitee/gen/config/Config.java index 45a4110..ff8595e 100644 --- a/gen/src/main/java/com/gitee/gen/config/Config.java +++ b/gen/src/main/java/com/gitee/gen/config/Config.java @@ -42,7 +42,7 @@ public class Config { @Bean(name = "db1", typed = true) @Condition(onProperty="${dbms.enable} = true") public DataSource db2(@Inject("${gen.db2}") BasicDataSource ds) { - log.info("使用DBMS存储数据,url={}, user={}, pwd={}", ds.getUrl(), ds.getUsername(), ds.getPassword()); + log.info("使用DBMS存储数据,url={}", ds.getUrl()); return ds; } diff --git a/readme.md b/readme.md index d080392..008ce16 100644 --- a/readme.md +++ b/readme.md @@ -42,6 +42,8 @@ docker run --name gen --restart=always \ -p 6969:6969 \ -v /opt/gen/:/opt/gen/ \ + -v /opt/gen/conf/:/gen/conf/ \ + -v /opt/gen/ext:/gen/ext \ -d registry.cn-hangzhou.aliyuncs.com/tanghc/gen:latest ``` @@ -73,13 +75,16 @@ docker run --name gen --restart=always \ 将驱动放入ext文件夹下 -- docker直接重启服务 +- docker -- 本地运行 +1. 将数据库驱动放到`/opt/gen/ext`下 +2. 重启docker -设置环境变量JAVA_HOME,指向java安装目录 +- 本地运行 -编辑`run.sh`文件,添加启动参数:`-Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:./ext` +1. 将数据库驱动放到`gen/ext`下 +2. 设置环境变量JAVA_HOME,指向java安装目录 +3. 编辑`run.sh`文件,添加启动参数:`-Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:./ext` 添加后如下: -- Gitee From 5971f5a5dc43cf615a6021e3356e1eeaf7140d0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 19 Jun 2024 02:15:00 +0800 Subject: [PATCH 23/38] 2.0.2 --- gen/src/main/resources/app.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 7aabb17..5693491 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -21,10 +21,10 @@ dbms: # password: root gen.db2: - url: jdbc:mysql://${dbms.host}/${dbms.database}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai + url: jdbc:mysql://${dbms.host:}/${dbms.database}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai driverClassName: com.mysql.cj.jdbc.Driver - userName: ${dbms.username} - password: ${dbms.password} + userName: ${dbms.username:} + password: ${dbms.password:} # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) mybatis.db1: -- Gitee From 4ff362212a5453c5eaedb559e6237c8e54b73db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 19 Jun 2024 02:18:18 +0800 Subject: [PATCH 24/38] 2.0.2 --- gen/src/main/resources/app.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gen/src/main/resources/app.yml b/gen/src/main/resources/app.yml index 5693491..f9403d7 100644 --- a/gen/src/main/resources/app.yml +++ b/gen/src/main/resources/app.yml @@ -16,14 +16,14 @@ gen.db1: dbms: enable: false # host: localhost:3306 - database: gen +# database: gen # username: root # password: root gen.db2: - url: jdbc:mysql://${dbms.host:}/${dbms.database}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai + url: jdbc:mysql://${dbms.host:localhost:3306}/${dbms.database:gen}?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai driverClassName: com.mysql.cj.jdbc.Driver - userName: ${dbms.username:} + userName: ${dbms.username:gen} password: ${dbms.password:} # 配置数据源对应的 mybatis 信息(要与 DataSource bean 的名字对上) -- Gitee From 86f31bad337cab0e45469e13a6d1664fe09f4f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 19 Jun 2024 14:31:48 +0800 Subject: [PATCH 25/38] 2.0.2 --- readme.md | 49 ++++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/readme.md b/readme.md index 008ce16..71a25f2 100644 --- a/readme.md +++ b/readme.md @@ -26,10 +26,6 @@ > 升级:后续升级覆盖gen.jar和dist文件夹即可 -- 数据库支持 - -默认支持mysql数据库,如果要支持其他数据库将驱动包放到`gen/lib`下 - ### 方式2:docker运行 - 下载公共镜像 @@ -73,8 +69,6 @@ docker run --name gen --restart=always \ 默认支持mysql数据库,如果要支持其它数据库,如Oracle,步骤如下: -将驱动放入ext文件夹下 - - docker 1. 将数据库驱动放到`/opt/gen/ext`下 @@ -92,32 +86,14 @@ docker run --name gen --restart=always \ 执行`sh run.sh`启动 -## 其它 - -- [快速搭建SpringBoot+Mybatis应用](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=2478942&doc_id=27724) -- [更多模板](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=2979234&doc_id=27724) -- [代码生成器原理](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=3287812&doc_id=27724) - -## 工程说明 - -- front:前端vue -- gen:后端服务 -- db:数据库初始化文件 -- script:辅助脚本 - -## 本地开发 - -- 运行`gen`下的`com.gitee.gen.App`(solon-web工程) -- 运行`front`下的前端项目,详见:[readme](./front/README.md) ## 使用Mysql存储 默认使用SQLITE3存储,如果要使用mysql存储,需要做如下配置 - 创建数据库, [SQL文件](https://gitee.com/durcframework/code-gen/blob/master/db/mysql.sql) -- 打开app.yml文件 - -- 修改如下配置 +- 打开app.yml文件,docker环境下在`/opt/gen/conf`下新建一个`app.yml`文件 +- 添加/修改如下配置 ```yaml dbms: @@ -130,7 +106,26 @@ dbms: password: root ``` -执行`sh run.sh`启动 +重启服务 + +## 其它 + +- [快速搭建SpringBoot+Mybatis应用](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=2478942&doc_id=27724) +- [更多模板](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=2979234&doc_id=27724) +- [代码生成器原理](https://gitee.com/durcframework/code-gen/wikis/pages?sort_id=3287812&doc_id=27724) + +## 工程说明 + +- front:前端vue +- gen:后端服务 +- db:数据库初始化文件 +- script:辅助脚本 + +## 本地开发 + +- 运行`gen`下的`com.gitee.gen.App`(solon-web工程) +- 运行`front`下的前端项目,详见:[readme](./front/README.md) + ## 参与贡献 -- Gitee From 6bd8160ffe92bbb1d5bb51e5305b1a2216cb5d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Wed, 19 Jun 2024 14:34:05 +0800 Subject: [PATCH 26/38] 2.0.2 --- changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog.md b/changelog.md index 002d865..cbec035 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # changelog +## 2.0.2 + +- 支持其它数据库代码生成,具体参考项目首页说明 + ## 2.0.1 - 新增`${context.dbNameCamel}` 数据库名驼峰,如:shopOrder -- Gitee From b26fbc0bd2e3538dc1dc5f227bb912243b3be5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Thu, 20 Jun 2024 09:06:03 +0800 Subject: [PATCH 27/38] 2.0.2 --- readme.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/readme.md b/readme.md index 71a25f2..8d43723 100644 --- a/readme.md +++ b/readme.md @@ -45,8 +45,6 @@ docker run --name gen --restart=always \ 浏览器访问`http://ip:6969/` -后续更新替换jar文件和dist文件夹即可。 - ### 本地构建镜像 -- Gitee From 2a2c2bc04de6385db0367a007670b8df3efb6690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Thu, 20 Jun 2024 14:44:17 +0800 Subject: [PATCH 28/38] 2.0.2 --- .../com/gitee/gen/service/UpgradeService.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gen/src/main/java/com/gitee/gen/service/UpgradeService.java b/gen/src/main/java/com/gitee/gen/service/UpgradeService.java index f37ec8f..79f8a79 100644 --- a/gen/src/main/java/com/gitee/gen/service/UpgradeService.java +++ b/gen/src/main/java/com/gitee/gen/service/UpgradeService.java @@ -56,7 +56,7 @@ public class UpgradeService { @Inject("${gen.db2.driverClassName}") private String driverClassName; - @Inject("${gen.db-name:gen}") + @Inject("${dbms.database:gen}") private String dbName; public void init() { @@ -219,12 +219,17 @@ public class UpgradeService { */ public boolean addColumn(String tableName, String columnName, String type) { if (!isColumnExist(tableName, columnName)) { - if (isMysql()) { - upgradeMapper.addColumnMysql(tableName, columnName, type); - } else if (isDm()) { - upgradeMapper.addColumnDm(tableName, columnName, type); - } else { - upgradeMapper.addColumn(tableName, columnName, type); + try { + if (isMysql()) { + upgradeMapper.addColumnMysql(tableName, columnName, type); + } else if (isDm()) { + upgradeMapper.addColumnDm(tableName, columnName, type); + } else { + upgradeMapper.addColumn(tableName, columnName, type); + } + } catch (Exception e) { + log.error("add column error, tableName={}, columnName={}, type={}", + tableName, columnName, type, e); } return true; } -- Gitee From e5f7530018507a6a3de2a135c0c40dc6a26834f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Fri, 12 Jul 2024 17:50:33 +0800 Subject: [PATCH 29/38] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gen/src/main/resources/gen_init.db | Bin 69632 -> 69632 bytes gen/src/main/resources/gen_init_v1.db | Bin 0 -> 69632 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 gen/src/main/resources/gen_init_v1.db diff --git a/gen/src/main/resources/gen_init.db b/gen/src/main/resources/gen_init.db index 2f69f8bd55d0313d70041b6be613986ecfeb7281..fa36d5aa44404911c068cc4520c60fc32408a4ee 100644 GIT binary patch delta 2759 zcmcImdrVVj6u-Bn4=%P}n}LGLxKxzK%7p?g^=(vKFgit@iSfnl?N=zYz4hJ;gOILN zKmn&>KC~JggG9}?EFyNs*PMeyI99(2}5!0DUpDsTYK+Ni&hW z^0h2gTAF^5fiz^iVc>W_<8KxZ_!zE^sdKwHX1(BTgn}qF_;`->)$*b==dr-^lKjZl zO-)S<)~Y2oP*cl|ocm<>+~wiVT8EFH7`}-#IJg%4i2n%_cmaL|zk{dXCq+P}E}ig>8^(dBL*GqNH!JTDV$P5TS%cZ|~Sp=){sK_v^;ISGq0BY*-9^TLtLxHepk2 z6=b=3wg$e%`XLs?RR-%M*5w=1h?Zr$En$pezXbh3A4X!?i`C=r6Ye)*aM;jRX0_R^ zHiy+#zBk0VoY3xeE-fi{m3mxdE_GzjyF8AiPP?PD#N%*~J?H<(dU>Tf$waBa zJp%j&9)NqejW@vDRCN+jsQ0j<v7 zM!}chQ*ag>1_Iav)`4uGGj2}c) znX74OX|nZtcEKDCk(QMuA11Gjy&(0Smvao*melA7jZWGkhmRi|Ie8heAIwYXJoISb z>ccw&BauP$ynS`T)y*9{m&CaWt)hc?%qjyOo?eO56QR)P<=_@qT?h?#Y(tS1^O6;F zEW*y`>K|Ue^{Drf*Nr@fwycTwMCVKz=HrUeqjVrrmN z>CVfK-Zzq&+R?#_BW)dMpfg<#J#l>Az98&|66^Kh%F0oK4KAOTqqjk^!6&Vla5q*e zj88GmlS|Lkv5oAG<{(_lH-%`gdm_)|#5=SAIbLv2FNmDm+Gd;`2Jh-xs8y_#OdsC4 zG}3!xTDb-e??cz$HQ#=^VW(wIp&Ww#5BS{qLoSS)e_}0xhkHdpEMu!Fz$`{Zw zSIslDsOMa2o+#nP%F%Jk8TA-T7ad?ys{-(y1j|*J!|`b`oV*P3myg8_QL}6?#kxIY zricaGJNamjiVVnnK>1UgFi&4kA+)mFY84xTG7}iNb4t3~mDMmiN3y5(8F#ugdQDBH zE&f;5U`iDs@=QiJ9@Ti51nMLtFs))%%tmEXPYgWn*34x-K0XAY*^0^2n=O+^37gY` zF6PgdNdy+*FO|HUv9ih^9?>6kWLosDj?_h~^`zy$QtNq=+@ILpV|k=4ZcWX~fytP7 UVNEh%!)y$gvV7J4pC?U!0jD~_00000 delta 325 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 S9f??eoH1oyqJ-i8|NbAXcS literal 0 HcmV?d00001 -- Gitee From 34c22cc613c89f4d32227171ca44ba1cba532f94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Fri, 12 Jul 2024 17:53:57 +0800 Subject: [PATCH 30/38] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/fastmybatis-v3.0/controller.vm | 95 ++++++++++++++++++++++++ templates/fastmybatis-v3.0/entity.vm | 58 +++++++++++++++ templates/fastmybatis-v3.0/mapper.vm | 14 ++++ templates/fastmybatis-v3.0/service.vm | 19 +++++ 4 files changed, 186 insertions(+) create mode 100644 templates/fastmybatis-v3.0/controller.vm create mode 100644 templates/fastmybatis-v3.0/entity.vm create mode 100644 templates/fastmybatis-v3.0/mapper.vm create mode 100644 templates/fastmybatis-v3.0/service.vm diff --git a/templates/fastmybatis-v3.0/controller.vm b/templates/fastmybatis-v3.0/controller.vm new file mode 100644 index 0000000..e5f28fd --- /dev/null +++ b/templates/fastmybatis-v3.0/controller.vm @@ -0,0 +1,95 @@ +## filename=${context.javaBeanName}Controller.java, folder=controller +#set($entityClass="${context.classNamePascal}") +#set($entityObj="${context.classNameCamel}") +#set($serviceClass="${context.classNamePascal}Service") +#set($serviceObj="${context.classNameCamel}Service") +#set($pkg="${context.packageName}") +package ${pkg}.web.controller; + +import com.gitee.fastmybatis.core.PageInfo; +import com.gitee.fastmybatis.core.query.Query; +import com.gitee.fastmybatis.core.query.param.PageParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import ${pkg}.dao.entity.${entityClass}; +import ${pkg}.service.${serviceClass}Service; + +/** + * @author ${context.author} + */ +@RestController +@RequestMapping("${table.tableName}") +public class ${entityClass}Controller { + + @Autowired + private ${serviceClass} ${serviceObj}; + + /** + * 分页查询 + * + * @param param 请求参数 + * @return 返回分页信息 + */ + @GetMapping("/page") + public Result> page(PageParam param) { + Query query = param.toQuery(); + PageInfo<${entityClass}> pageInfo = ${serviceObj}.page(query); + return Result.ok(pageInfo); + } + + /** + * 新增 + * + * @param $entityObj + * @return 返回主键id + */ + @PostMapping("/save") + public Result<${pk.javaTypeBox}> save(${entityClass} $entityObj) { + ${serviceObj}.save($entityObj); + // 返回添加后的主键值 + return Result.ok(${entityObj}.getId()); + } + + /** + * 详情 + * + * @param id + * @return 返回详情 + */ + @GetMapping("/detail") + public Result<${entityClass}> detail(${pk.javaTypeBox} id) { + ${entityClass} record = ${serviceObj}.getById(id); + return Result.ok(record); + } + + /** + * 修改 + * + * @param $entityObj 表单数据 + * @return + */ + @PutMapping("/update") + public Result update(${entityClass} $entityObj) { + ${serviceObj}.update($entityObj); + return Result.ok(); + } + + /** + * 删除 + * + * @param id 主键id + * @return + */ + @DeleteMapping("/delete") + public Result delete(${pk.javaTypeBox} id) { + ${serviceObj}.deleteById(id); + return Result.ok(); + } + +} \ No newline at end of file diff --git a/templates/fastmybatis-v3.0/entity.vm b/templates/fastmybatis-v3.0/entity.vm new file mode 100644 index 0000000..ba1b9b7 --- /dev/null +++ b/templates/fastmybatis-v3.0/entity.vm @@ -0,0 +1,58 @@ +## filename=${context.javaBeanName}.java, folder=entity +#set($entityClass="${context.classNamePascal}") +package ${context.packageName}.dao.entity; + +import com.gitee.fastmybatis.annotation.Pk; +import com.gitee.fastmybatis.annotation.PkStrategy; +import com.gitee.fastmybatis.annotation.Table; +import com.gitee.fastmybatis.core.query.LambdaQuery; +import lombok.Data; + +#if(${table.hasDateField}) +import java.util.Date; +#end +#if(${table.hasLocalDateField}) +import java.time.LocalDate; +#end +#if(${table.hasLocalDateTimeField}) +import java.time.LocalDateTime; +#end +#if(${table.hasBigDecimalField}) +import java.math.BigDecimal; +#end + +/** + * 表名:${table.tableName} +#if("$!{table.comment}" != "") + * 备注:${table.comment} +#end + * + * @author ${context.author} + */ +@Table(name = "${table.tableName}", pk = @Pk(name = "${pk.columnName}", strategy = PkStrategy.INCREMENT)) +@Data +public class ${entityClass} { + +#foreach($column in $columns) +#if("$!{column.comment}" != "") + /** + * ${column.comment} + */ +#end +#if(${column.columnName} == "is_deleted") + @com.gitee.fastmybatis.annotation.Column(logicDelete = true) +#end + private ${column.javaTypeBox} ${column.javaFieldName}; + +#end + + /** + * 创建LambdaQuery对象 + * + * @return 返回LambdaQuery对象 + */ + public static LambdaQuery<${entityClass}> query() { + return new LambdaQuery<>(${entityClass}.class); + } + +} \ No newline at end of file diff --git a/templates/fastmybatis-v3.0/mapper.vm b/templates/fastmybatis-v3.0/mapper.vm new file mode 100644 index 0000000..25a7fe5 --- /dev/null +++ b/templates/fastmybatis-v3.0/mapper.vm @@ -0,0 +1,14 @@ +## filename=${context.javaBeanName}Mapper.java, folder=mapper +#set($entityClass="${context.classNamePascal}") +#set($pkg="${context.packageName}") +package ${pkg}.dao.mapper; + +import com.gitee.fastmybatis.core.mapper.BaseMapper; +import ${pkg}.dao.entity.${entityClass}; + +/** + * @author ${context.author} + */ +public interface ${entityClass}Mapper extends BaseMapper<${entityClass}> { + +} \ No newline at end of file diff --git a/templates/fastmybatis-v3.0/service.vm b/templates/fastmybatis-v3.0/service.vm new file mode 100644 index 0000000..9c5fe1f --- /dev/null +++ b/templates/fastmybatis-v3.0/service.vm @@ -0,0 +1,19 @@ +## filename=${context.javaBeanName}Service.java, folder=service +#set($entityClass="${context.classNamePascal}") +#set($mapperClass="${context.classNamePascal}Mapper") +#set($pkg="${context.packageName}") +package ${pkg}.mapper; + +import com.gitee.fastmybatis.core.support.BaseLambdaService; +import ${pkg}.dao.entity.${entityClass}; +import ${pkg}.dao.mapper.${mapperClass}; +import org.springframework.stereotype.Service; + + +/** + * @author ${context.author} + */ +@Service +public class ${entityClass}Service extends BaseLambdaService<${entityClass}, ${mapperClass}> { + +} \ No newline at end of file -- Gitee From 63ab76e148f514896bef50fdc2efe69d8a17019a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Sat, 13 Jul 2024 17:37:59 +0800 Subject: [PATCH 31/38] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/public/help/velocity.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/front/public/help/velocity.md b/front/public/help/velocity.md index a6c0b9f..e7ecfb4 100644 --- a/front/public/help/velocity.md +++ b/front/public/help/velocity.md @@ -38,11 +38,12 @@ My name is ${name} ```html #foreach($item in $list) $item - $velocityCount + ${foreach.index} #end ``` -其中,`$item`代表遍历的每一项,`$velocityCount`表示当前循环次数的计数器,从1开始 +其中,`$item`代表遍历的每一项,`${foreach.index}`表示当前循环次数的计数器,从0开始 + for循环跳出`#break` -- Gitee From 3edf1d5b1c078a3594ec8cb0dc4447c0daaa3366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Sat, 13 Jul 2024 18:10:05 +0800 Subject: [PATCH 32/38] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gen/src/main/resources/gen_init.db | Bin 69632 -> 69632 bytes templates/fastmybatis-v3.0/controller.vm | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/gen/src/main/resources/gen_init.db b/gen/src/main/resources/gen_init.db index fa36d5aa44404911c068cc4520c60fc32408a4ee..795f8f18ac3765db61be902861cd92d74cccccf6 100644 GIT binary patch delta 168 zcmZozz|ydQWr8$g&O{k!#+;1_%g(d$Gw_)(^KWcqX6Brx#LvZ`7`a+~bI0XI=ILRa zjOLSBt}mPXY6iD>g}EH+ z16WdFdLKWd?Bp|dlqWB_mA_g1Hb3L^jl7IvlO68Vpeu=-EHED^arZJaS1s3O$$QTY E0m7C)i~s-t delta 128 zcmZozz|ydQWr8$g_Cy(H#_Wv=%g(daGw_)(*KcerX6Bq~#LvZ`7`f7Yv&7{_=E>~M zL6g<5`%k{v%s;vMtN7+U*Z(k1mTi-oeC}rV pageInfo = ${serviceObj}.page(query); return Result.ok(pageInfo); } - + /** * 新增 * @@ -50,12 +53,12 @@ public class ${entityClass}Controller { * @return 返回主键id */ @PostMapping("/save") - public Result<${pk.javaTypeBox}> save(${entityClass} $entityObj) { + public Result<${pk.javaTypeBox}> save(@Valid @RequestBody ${entityClass} $entityObj) { ${serviceObj}.save($entityObj); // 返回添加后的主键值 return Result.ok(${entityObj}.getId()); } - + /** * 详情 * @@ -67,7 +70,7 @@ public class ${entityClass}Controller { ${entityClass} record = ${serviceObj}.getById(id); return Result.ok(record); } - + /** * 修改 * @@ -75,11 +78,11 @@ public class ${entityClass}Controller { * @return */ @PutMapping("/update") - public Result update(${entityClass} $entityObj) { + public Result update(@Valid @RequestBody ${entityClass} $entityObj) { ${serviceObj}.update($entityObj); return Result.ok(); } - + /** * 删除 * @@ -91,5 +94,5 @@ public class ${entityClass}Controller { ${serviceObj}.deleteById(id); return Result.ok(); } - -} \ No newline at end of file + +} -- Gitee From 9d0e249ba6aec7d269da1466a0ee41c5e7495011 Mon Sep 17 00:00:00 2001 From: RGK Date: Thu, 18 Jul 2024 10:04:45 +0800 Subject: [PATCH 33/38] =?UTF-8?q?=E7=A7=BB=E9=99=A4SqlHelper=E4=B8=ADgetCo?= =?UTF-8?q?nnection/getDataSource=E6=96=B9=E6=B3=95,=E5=9B=A0=E4=B8=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=BC=E4=B9=8E=E5=B7=B2=E7=BB=8F=E7=94=B1?= =?UTF-8?q?DataSourceManager=E6=89=BF=E6=8B=85=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gitee/gen/gen/SqlHelper.java | 75 ++++--------------- 1 file changed, 14 insertions(+), 61 deletions(-) diff --git a/gen/src/main/java/com/gitee/gen/gen/SqlHelper.java b/gen/src/main/java/com/gitee/gen/gen/SqlHelper.java index 8b66180..1e4163b 100644 --- a/gen/src/main/java/com/gitee/gen/gen/SqlHelper.java +++ b/gen/src/main/java/com/gitee/gen/gen/SqlHelper.java @@ -1,6 +1,10 @@ package com.gitee.gen.gen; -import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; +import java.util.Map; +import javax.sql.DataSource; import org.apache.ibatis.jdbc.SqlRunner; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.Environment; @@ -12,14 +16,6 @@ import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.sql.DataSource; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.concurrent.ConcurrentHashMap; - /** * 执行SQL语句的帮助类 * @@ -28,14 +24,6 @@ import java.util.concurrent.ConcurrentHashMap; public class SqlHelper { private static final Logger logger = LoggerFactory.getLogger(SqlHelper.class); - private static final String DRIVER = "driver"; - private static final String URL = "url"; - private static final String USERNAME = "username"; - private static final String PASSWORD = "password"; - - private static final Map dataSourceMap = new ConcurrentHashMap<>(16); - private static final ThreadLocal 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