From 7663320a553d3d8f5e2b2a2307af3ede4630efa2 Mon Sep 17 00:00:00 2001
From: QAIU <736226400@qq.com>
Date: Thu, 6 Jun 2024 18:06:33 +0800
Subject: [PATCH] =?UTF-8?q?1.=20h2=E6=95=B0=E6=8D=AE=E5=BA=93=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E4=BC=98=E5=8C=96,=20=E5=8F=96=E6=B6=88h2server?=
=?UTF-8?q?=E5=90=AF=E5=8A=A8=202.=20=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?=
=?UTF-8?q?=E4=BC=98=E5=8C=96,=20pom=E7=89=88=E6=9C=AC=E7=BB=9F=E4=B8=80?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=203.=20core=E7=9A=84beanutils=E4=BE=9D?=
=?UTF-8?q?=E8=B5=96=E5=8D=87=E7=BA=A7=E4=B8=BAcommons-beanutils2=E7=89=88?=
=?UTF-8?q?=E6=9C=AC,=20=E4=BF=AE=E5=A4=8D=E4=B9=8B=E5=89=8D=E7=89=88?=
=?UTF-8?q?=E6=9C=AC=E7=9A=84=E5=AE=89=E5=85=A8=E9=A3=8E=E9=99=A9.=204.=20?=
=?UTF-8?q?=E6=AD=A4=E7=89=88=E6=9C=AC=E6=89=93=E5=8C=85=E9=83=A8=E7=BD=B2?=
=?UTF-8?q?=E9=9C=80=E8=A6=81=E6=9B=BF=E6=8D=A2=E4=B9=8B=E5=89=8D=E6=89=80?=
=?UTF-8?q?=E6=9C=89=E4=BE=9D=E8=B5=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
core-database/pom.xml | 3 +-
.../main/java/cn/qaiu/db/ddl/CreateTable.java | 22 ++++--
.../java/cn/qaiu/db/pool/JDBCPoolInit.java | 78 +++----------------
core/pom.xml | 23 ++----
.../java/cn/qaiu/vx/core/util/CommonUtil.java | 4 +-
.../java/cn/qaiu/vx/core/util/ParamUtil.java | 2 +-
.../cn/qaiu/vx/core/util/ReflectionUtil.java | 11 +--
parser/pom.xml | 5 +-
pom.xml | 33 +++++++-
web-service/pom.xml | 22 +++---
web-service/src/main/resources/app-dev.yml | 2 +-
.../src/main/resources/http-tools/test.http | 6 +-
.../test/java/cn/qaiu/web/test/Test01.java | 6 +-
13 files changed, 90 insertions(+), 127 deletions(-)
diff --git a/core-database/pom.xml b/core-database/pom.xml
index 281d980..9c15186 100644
--- a/core-database/pom.xml
+++ b/core-database/pom.xml
@@ -5,7 +5,7 @@
netdisk-fast-download
cn.qaiu
- 0.1.7
+ ${revision}
4.0.0
@@ -23,7 +23,6 @@
cn.qaiu
core
- 1.0.8
diff --git a/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java b/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java
index 093cbc4..2b4b5f7 100644
--- a/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java
+++ b/core-database/src/main/java/cn/qaiu/db/ddl/CreateTable.java
@@ -1,5 +1,6 @@
package cn.qaiu.db.ddl;
+import cn.qaiu.db.pool.JDBCType;
import cn.qaiu.vx.core.util.ReflectionUtil;
import io.vertx.codegen.format.CamelCase;
import io.vertx.codegen.format.Case;
@@ -65,7 +66,9 @@ public class CreateTable {
}
}
- public static String getCreateTableSQL(Class> clz) {
+ public static String getCreateTableSQL(Class> clz, JDBCType type) {
+ String quotationMarks = type == JDBCType.H2DB ? "\"" : "`";
+ String endStr = type == JDBCType.H2DB ? ");" : ")ENGINE=InnoDB DEFAULT CHARSET=utf8;";
// 判断类上是否有次注解
String primaryKey = null; // 主键
String tableName = null; // 表名
@@ -93,7 +96,7 @@ public class CreateTable {
int[] decimalSize = {22, 2};
int varcharSize = 255;
StringBuilder sb = new StringBuilder(50);
- sb.append("CREATE TABLE IF NOT EXISTS \"").append(tableName).append("\" ( \r\n ");
+ sb.append("CREATE TABLE IF NOT EXISTS ").append(quotationMarks).append(tableName).append(quotationMarks).append(" ( \r\n ");
boolean firstId = true;
for (Field f : fields) {
Class> paramType = f.getType();
@@ -114,7 +117,7 @@ public class CreateTable {
decimalSize = fieldAnnotation.decimalSize();
varcharSize = fieldAnnotation.varcharSize();
}
- sb.append("\"").append(column).append("\"");
+ sb.append(quotationMarks).append(column).append(quotationMarks);
sb.append(" ").append(sqlType);
// 添加类型长度
if (sqlType.equals("DECIMAL")) {
@@ -155,17 +158,20 @@ public class CreateTable {
//去掉最后一个逗号
int lastIndex = sql.lastIndexOf(",");
sql = sql.substring(0, lastIndex) + sql.substring(lastIndex + 1);
- return sql.substring(0, sql.length() - 1) + ");\r\n";
+ return sql.substring(0, sql.length() - 1) + endStr;
}
- public static void createTable(JDBCPool pool) {
+ public static void createTable(JDBCPool pool, JDBCType type) {
Set> tableClassList = ReflectionUtil.getReflections().getTypesAnnotatedWith(Table.class);
if (tableClassList.isEmpty()) LOGGER.info("Table model class not fount");
tableClassList.forEach(clazz -> {
- String createTableSQL = getCreateTableSQL(clazz);
+ String createTableSQL = getCreateTableSQL(clazz, type);
+
pool.query(createTableSQL).execute().onSuccess(
- rs -> LOGGER.info("\n" + createTableSQL + "create table --> ok")
- ).onFailure(Throwable::printStackTrace);
+ rs -> LOGGER.info("table auto generate:\n" + createTableSQL)
+ ).onFailure(e -> {
+ LOGGER.error(e.getMessage() + " SQL: \n" + createTableSQL);
+ });
});
}
}
diff --git a/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java b/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java
index 23cca8c..a82fac7 100644
--- a/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java
+++ b/core-database/src/main/java/cn/qaiu/db/pool/JDBCPoolInit.java
@@ -1,20 +1,13 @@
package cn.qaiu.db.pool;
import cn.qaiu.db.ddl.CreateTable;
-import cn.qaiu.db.server.H2ServerHolder;
import cn.qaiu.vx.core.util.VertxHolder;
-import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;
import io.vertx.jdbcclient.JDBCPool;
-import org.h2.tools.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.IOException;
-import java.sql.SQLException;
-
/**
* 初始化JDBC
*
Create date 2021/8/10 12:04
@@ -28,12 +21,14 @@ public class JDBCPoolInit {
JsonObject dbConfig;
Vertx vertx = VertxHolder.getVertxInstance();
String url;
+ private JDBCType type;
private static JDBCPoolInit instance;
public JDBCPoolInit(Builder builder) {
this.dbConfig = builder.dbConfig;
this.url = builder.url;
+ this.type = builder.type;
}
public static Builder builder() {
@@ -47,10 +42,12 @@ public class JDBCPoolInit {
public static class Builder {
private JsonObject dbConfig;
private String url;
+ private JDBCType type;
public Builder config(JsonObject dbConfig) {
this.dbConfig = dbConfig;
this.url = dbConfig.getString("jdbcUrl");
+ this.type = JDBCUtil.getJDBCType(dbConfig.getString("driverClassName"));
return this;
}
@@ -73,67 +70,16 @@ public class JDBCPoolInit {
return;
}
- // 异步启动H2服务
- vertx.createSharedWorkerExecutor("h2-server", 1, Long.MAX_VALUE)
- .executeBlocking(this::h2serverExecute)
- .onSuccess(res->{
- LOGGER.info(res);
- // 初始化数据库连接
- vertx.createSharedWorkerExecutor("sql-pool-init")
- .executeBlocking(this::poolInitExecute)
- .onSuccess(LOGGER::info)
- .onFailure(Throwable::printStackTrace);
+ // 初始化数据库连接
+ vertx.createSharedWorkerExecutor("sql-pool-init")
+ .executeBlocking(() -> {
+ // 初始化连接池
+ pool = JDBCPool.pool(vertx, dbConfig);
+ CreateTable.createTable(pool, type);
+ return "数据库连接初始化: URL=" + url;
})
+ .onSuccess(LOGGER::info)
.onFailure(Throwable::printStackTrace);
-
-
- }
-
- private void poolInitExecute(Promise promise) {
- // 初始化连接池
- pool = JDBCPool.pool(vertx, dbConfig);
- CreateTable.createTable(pool);
- promise.complete("init jdbc pool success");
-
- }
-
- private void checkOrCreateDBFile() {
- LOGGER.info("init sql start");
- String[] path = url.split("\\./");
- path[1] = path[1].split(";")[0];
- path[1] += ".mv.db";
- File file = new File(path[1]);
- if (!file.exists()) {
- if (!file.getParentFile().exists()) {
- if (file.getParentFile().mkdirs()) {
- LOGGER.info("mkdirs -> {}", file.getParentFile().getAbsolutePath());
- }
- }
- try {
- if (file.createNewFile()) {
- LOGGER.info("create file -> {}", file.getAbsolutePath());
- }
- } catch (IOException e) {
- LOGGER.error(e.getMessage());
- throw new RuntimeException("file create failed");
- }
- }
- }
-
- private void h2serverExecute(Promise promise) {
- // 初始化H2db, 创建本地db文件
- checkOrCreateDBFile();
-
- try {
- String url = dbConfig.getString("jdbcUrl");
- String[] portStr = url.split(":");
- String port = portStr[portStr.length - 1].split("[/\\\\]")[0];
- LOGGER.info("H2server listen port to {}", port);
- H2ServerHolder.init(Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", port).start());
- promise.complete("Start h2Server success");
- } catch (SQLException e) {
- throw new RuntimeException("Start h2Server failed: " + e.getMessage());
- }
}
/**
diff --git a/core/pom.xml b/core/pom.xml
index 0c6fb90..ccb07bb 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -5,28 +5,15 @@
netdisk-fast-download
cn.qaiu
- 0.1.7
+ ${revision}
4.0.0
- 1.0.8
core
UTF-8
-
-
-
- io.vertx
- vertx-dependencies
- ${vertx.version}
- pom
- import
-
-
-
-
@@ -73,11 +60,13 @@
commons-lang3
${commons-lang3.version}
+
- commons-beanutils
- commons-beanutils
- 1.9.4
+ com.melloware
+ commons-beanutils2
+ ${commons-beanutils2.version}
+
com.fasterxml.jackson.core
jackson-databind
diff --git a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java
index a9142a2..fccfc68 100644
--- a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java
+++ b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java
@@ -3,8 +3,8 @@ package cn.qaiu.vx.core.util;
import cn.qaiu.vx.core.annotaions.HandleSortFilter;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonObject;
-import org.apache.commons.beanutils.ConvertUtils;
-import org.apache.commons.beanutils.Converter;
+import org.apache.commons.beanutils2.ConvertUtils;
+import org.apache.commons.beanutils2.Converter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java
index 13ee131..60f8975 100644
--- a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java
+++ b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java
@@ -1,7 +1,7 @@
package cn.qaiu.vx.core.util;
import io.vertx.core.MultiMap;
-import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.beanutils2.BeanUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java
index 3178c54..65bdd6c 100644
--- a/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java
+++ b/core/src/main/java/cn/qaiu/vx/core/util/ReflectionUtil.java
@@ -5,12 +5,13 @@ import javassist.bytecode.AccessFlag;
import javassist.bytecode.CodeAttribute;
import javassist.bytecode.LocalVariableAttribute;
import javassist.bytecode.MethodInfo;
-import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.reflections.Reflections;
-import org.reflections.scanners.*;
+import org.reflections.scanners.MemberUsageScanner;
+import org.reflections.scanners.MethodParameterNamesScanner;
+import org.reflections.scanners.Scanners;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
import org.reflections.util.FilterBuilder;
@@ -185,10 +186,10 @@ public final class ReflectionUtil {
return DateUtils.parseDate(value, fmt);
} catch (ParseException e) {
e.printStackTrace();
- throw new ConversionException("无法将格式化日期");
+ throw new RuntimeException("无法将格式化日期");
}
default:
- throw new ConversionException("无法将String类型" + value + "转为[" + name + "]");
+ throw new RuntimeException("无法将String类型" + value + "转为[" + name + "]");
}
}
@@ -200,7 +201,7 @@ public final class ReflectionUtil {
* @return Array
*/
public static Object conversionArray(CtClass ctClass, String value) {
- if (!isBasicTypeArray(ctClass)) throw new ConversionException("无法解析数组");
+ if (!isBasicTypeArray(ctClass)) throw new RuntimeException("无法解析数组");
String[] strArr = value.split(",");
List