diff --git a/.documentation/JAVADOC-README.md b/.documentation/JAVADOC-README.md
index c2a8846..3344ef1 100644
--- a/.documentation/JAVADOC-README.md
+++ b/.documentation/JAVADOC-README.md
@@ -4,6 +4,6 @@
## 如何实现?
-若您也想通过 [Github Actions](https://docs.github.com/en/actions/learn-github-actions)
+若您也想通过 [Github Actions](https://docs.github.com/en/actions/learn-github-actions)
自动部署项目的Javadoc到 [Github Pages](https://pages.github.com/) ,
可以参考我的文章 [《自动部署Javadoc到Github Pages》](https://pages.carm.cc/doc/javadoc-in-github.html) 。
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bugs_report.md b/.github/ISSUE_TEMPLATE/bugs_report.md
index ad8f90e..249e2b5 100644
--- a/.github/ISSUE_TEMPLATE/bugs_report.md
+++ b/.github/ISSUE_TEMPLATE/bugs_report.md
@@ -1,30 +1,34 @@
---
-name: 问题提交
-about: 描述问题并提交,帮助我们对其进行检查与修复。
-title: ''
-labels: bug
-assignees: ''
+name: 问题提交 about: 描述问题并提交,帮助我们对其进行检查与修复。 title: ''
+labels: bug assignees: ''
---
### **问题简述**
+
用简短的话语描述一下大概问题。
### **问题来源**
+
描述一下通过哪些操作才发现的问题,如:
+
1. 使用了 '...'
2. 输入了 '....'
3. 出现了报错 '....'
### **预期结果** (可选)
+
如果问题不发生,应该是什么情况
### **问题截图/问题报错**
+
如果有报错或输出,请提供截图。
### **操作环境**
+
- 系统环境: `Windows 10` / `Ubuntu` / `...`
- Java版本: `JDK11` / `OPENJDK8` / `JRE8` / `...`
### **其他补充**
+
如有其他补充,可以在这里描述。
diff --git a/.github/ISSUE_TEMPLATE/feature_issues.md b/.github/ISSUE_TEMPLATE/feature_issues.md
index 2171186..b619f7c 100644
--- a/.github/ISSUE_TEMPLATE/feature_issues.md
+++ b/.github/ISSUE_TEMPLATE/feature_issues.md
@@ -1,20 +1,21 @@
---
-name: 功能需求
-about: 希望我们提供更多的功能。
-title: ''
-labels: enhancement
-assignees: ''
+name: 功能需求 about: 希望我们提供更多的功能。 title: ''
+labels: enhancement assignees: ''
---
-### **功能简述**
+### **功能简述**
+
简单的描述一下你想要的功能
### **需求来源**
+
简单的描述一下为什么需要这个功能。
### **功能参考**(可选)
+
如果有相关功能的参考,如文本、截图,请提供给我们。
### **附加内容**
+
如果有什么小细节需要重点注意,请在这里告诉我们。
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 5b79227..2371afe 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -37,34 +37,34 @@ jobs:
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
+ - name: Checkout repository
+ uses: actions/checkout@v2
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v1
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
- # ℹ️ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
- # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
- #- run: |
- # make bootstrap
- # make release
+ #- run: |
+ # make bootstrap
+ # make release
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/sonar-analyze.yml b/.github/workflows/sonar-analyze.yml
index 609ad3c..dfb98dc 100644
--- a/.github/workflows/sonar-analyze.yml
+++ b/.github/workflows/sonar-analyze.yml
@@ -4,7 +4,7 @@ on:
branches:
- master
pull_request:
- types: [opened, synchronize, reopened]
+ types: [ opened, synchronize, reopened ]
jobs:
build:
name: Build
diff --git a/README.md b/README.md
index 175f060..e1967c0 100644
--- a/README.md
+++ b/README.md
@@ -132,7 +132,7 @@
repositories {
// 采用github依赖库,安全稳定,但需要配置 (推荐)
maven { url 'https://maven.pkg.github.com/CarmJos/EasySQL' }
-
+
// 采用我的私人依赖库,简单方便,但可能因为变故而无法使用
maven { url 'https://repo.carm.cc/repository/maven-public/' }
}
@@ -146,13 +146,13 @@ repositories {
```groovy
dependencies {
-
+
//对于需要提供公共接口的项目,可以仅打包API部分,方便他人调用
api "cc.carm.lib:easysql-api:[LATEST RELEASE]"
//如需自定义连接池,则可以仅打包实现部分,自行创建SQLManager
api "cc.carm.lib:easysql-impl:[LATEST RELEASE]"
-
+
}
```
@@ -164,15 +164,16 @@ dependencies {
```groovy
dependencies {
-
+
//也可直接选择打包了连接池的版本
api "cc.carm.lib:easysql-beecp:[LATEST RELEASE]"
api "cc.carm.lib:easysql-hikaricp:[LATEST RELEASE]"
-
+
}
```
+
## 支持与捐赠
@@ -185,22 +186,20 @@ dependencies {
## 开源协议
-本项目源码采用 [GNU General Public License v3.0](https://opensource.org/licenses/GPL-3.0) 开源协议。
+本项目源码采用 [The MIT License](https://opensource.org/licenses/MIT) 开源协议。
-关于 GPL 协议
+关于 MIT 协议
-> GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
+> MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:
>
-> #### 可自由复制
-> 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。
-> #### 可自由分发
-> 在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。
-> #### 可以用来盈利
-> 你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。
-> #### 可自由修改
-> 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
+> 该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。
>
-> 需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
+> 这意味着:
+> - 你可以自由使用,复制,修改,可以用于自己的项目。
+> - 可以免费分发或用来盈利。
+> - 唯一的限制是必须包含许可声明。
+>
+> MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
>
> *以上文字来自 [五种开源协议GPL,LGPL,BSD,MIT,Apache](https://www.oschina.net/question/54100_9455) 。*
\ No newline at end of file
diff --git a/easysql-api/pom.xml b/easysql-api/pom.xml
index 5e5a5e7..0c9f4a8 100644
--- a/easysql-api/pom.xml
+++ b/easysql-api/pom.xml
@@ -1,6 +1,6 @@
-
cc.carm.lib
@@ -30,8 +30,8 @@
- GNU General Public License v3.0
- https://opensource.org/licenses/GPL-3.0
+ The MIT License
+ https://opensource.org/licenses/MIT
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLAction.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLAction.java
index 63699f3..3fc43d5 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLAction.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLAction.java
@@ -29,138 +29,138 @@ import java.util.function.Consumer;
*/
public interface SQLAction {
- /**
- * 得到该Action的UUID
- *
- * @return UUID
- */
- @NotNull UUID getActionUUID();
+ /**
+ * 得到该Action的UUID
+ *
+ * @return UUID
+ */
+ @NotNull UUID getActionUUID();
- /**
- * 得到短八位格式的UUID
- *
- * @return UUID(8)
- */
- @NotNull String getShortID();
+ /**
+ * 得到短八位格式的UUID
+ *
+ * @return UUID(8)
+ */
+ @NotNull String getShortID();
- /**
- * 得到该Action的创建时间
- *
- * @return 创建时间
- */
- long getCreateTime();
+ /**
+ * 得到该Action的创建时间
+ *
+ * @return 创建时间
+ */
+ long getCreateTime();
- /**
- * 得到该Action所要执行的源SQL语句
- *
- * @return 源SQL语句
- */
- @NotNull String getSQLContent();
+ /**
+ * 得到该Action所要执行的源SQL语句
+ *
+ * @return 源SQL语句
+ */
+ @NotNull String getSQLContent();
- /**
- * 得到承载该Action的对应{@link SQLManager}
- *
- * @return {@link SQLManager}
- */
- @NotNull SQLManager getManager();
+ /**
+ * 得到承载该Action的对应{@link SQLManager}
+ *
+ * @return {@link SQLManager}
+ */
+ @NotNull SQLManager getManager();
- /**
- * 执行该Action对应的SQL语句
- *
- * @return 指定数据类型
- * @throws SQLException 当SQL操作出现问题时抛出
- */
- @NotNull T execute() throws SQLException;
+ /**
+ * 执行该Action对应的SQL语句
+ *
+ * @return 指定数据类型
+ * @throws SQLException 当SQL操作出现问题时抛出
+ */
+ @NotNull T execute() throws SQLException;
- /**
- * 执行语句并返回值
- *
- * @param exceptionHandler 异常处理器 默认为 {@link #defaultExceptionHandler()}
- * @return 指定类型数据
- */
- @Nullable
- default T execute(@Nullable BiConsumer> exceptionHandler) {
- return execute(t -> t, exceptionHandler);
- }
+ /**
+ * 执行语句并返回值
+ *
+ * @param exceptionHandler 异常处理器 默认为 {@link #defaultExceptionHandler()}
+ * @return 指定类型数据
+ */
+ @Nullable
+ default T execute(@Nullable BiConsumer> exceptionHandler) {
+ return execute(t -> t, exceptionHandler);
+ }
- /**
- * 执行语句并处理返回值
- *
- * @param function 处理方法
- * @param 需要返回的内容
- * @return 指定类型数据
- * @throws SQLException 当SQL操作出现问题时抛出
- */
- @Nullable
- default R executeFunction(@NotNull SQLFunction function) throws SQLException {
- try {
- T value = execute();
- return function.apply(value);
- } catch (SQLException exception) {
- throw new SQLException(exception);
- }
- }
+ /**
+ * 执行语句并处理返回值
+ *
+ * @param function 处理方法
+ * @param 需要返回的内容
+ * @return 指定类型数据
+ * @throws SQLException 当SQL操作出现问题时抛出
+ */
+ @Nullable
+ default R executeFunction(@NotNull SQLFunction function) throws SQLException {
+ try {
+ T value = execute();
+ return function.apply(value);
+ } catch (SQLException exception) {
+ throw new SQLException(exception);
+ }
+ }
- /**
- * 执行语句并处理返回值
- *
- * @param function 处理方法
- * @param exceptionHandler 异常处理器 默认为 {@link #defaultExceptionHandler()}
- * @param 需要返回的内容
- * @return 指定类型数据
- */
- @Nullable
- default R execute(@NotNull SQLFunction function,
- @Nullable BiConsumer> exceptionHandler) {
- try {
- return executeFunction(function);
- } catch (SQLException exception) {
- handleException(exceptionHandler, exception);
- return null;
- }
- }
+ /**
+ * 执行语句并处理返回值
+ *
+ * @param function 处理方法
+ * @param exceptionHandler 异常处理器 默认为 {@link #defaultExceptionHandler()}
+ * @param 需要返回的内容
+ * @return 指定类型数据
+ */
+ @Nullable
+ default R execute(@NotNull SQLFunction function,
+ @Nullable BiConsumer> exceptionHandler) {
+ try {
+ return executeFunction(function);
+ } catch (SQLException exception) {
+ handleException(exceptionHandler, exception);
+ return null;
+ }
+ }
- /**
- * 异步执行SQL语句,采用默认异常处理,无需返回值。
- */
- default void executeAsync() {
- executeAsync(null);
- }
+ /**
+ * 异步执行SQL语句,采用默认异常处理,无需返回值。
+ */
+ default void executeAsync() {
+ executeAsync(null);
+ }
- /**
- * 异步执行SQL语句
- *
- * @param success 成功时的操作
- */
- default void executeAsync(@Nullable Consumer success) {
- executeAsync(success, null);
- }
+ /**
+ * 异步执行SQL语句
+ *
+ * @param success 成功时的操作
+ */
+ default void executeAsync(@Nullable Consumer success) {
+ executeAsync(success, null);
+ }
- /**
- * 异步执行SQL语句
- *
- * @param success 成功时的操作
- * @param failure 异常处理器 默认为 {@link SQLAction#defaultExceptionHandler()}
- */
- void executeAsync(@Nullable Consumer success, @Nullable BiConsumer> failure);
+ /**
+ * 异步执行SQL语句
+ *
+ * @param success 成功时的操作
+ * @param failure 异常处理器 默认为 {@link SQLAction#defaultExceptionHandler()}
+ */
+ void executeAsync(@Nullable Consumer success, @Nullable BiConsumer> failure);
- default void handleException(@Nullable BiConsumer> handler, SQLException exception) {
- if (handler == null) handler = defaultExceptionHandler();
- handler.accept(exception, this);
- }
+ default void handleException(@Nullable BiConsumer> handler, SQLException exception) {
+ if (handler == null) handler = defaultExceptionHandler();
+ handler.accept(exception, this);
+ }
- /**
- * @return 默认的异常处理器
- */
- default BiConsumer> defaultExceptionHandler() {
- return (exception, action) -> {
- getManager().getLogger().severe("Error when execute [" + action.getSQLContent() + "]");
- getManager().getLogger().severe(exception.getLocalizedMessage());
- exception.printStackTrace();
- };
- }
+ /**
+ * @return 默认的异常处理器
+ */
+ default BiConsumer> defaultExceptionHandler() {
+ return (exception, action) -> {
+ getManager().getLogger().severe("Error when execute [" + action.getSQLContent() + "]");
+ getManager().getLogger().severe(exception.getLocalizedMessage());
+ exception.printStackTrace();
+ };
+ }
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLBuilder.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLBuilder.java
index f49f8c6..48f74f1 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLBuilder.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLBuilder.java
@@ -11,11 +11,11 @@ import org.jetbrains.annotations.NotNull;
*/
public interface SQLBuilder {
- /**
- * 得到承载该Builder的对应{@link SQLManager}
- *
- * @return {@link SQLManager}
- */
- @NotNull SQLManager getManager();
+ /**
+ * 得到承载该Builder的对应{@link SQLManager}
+ *
+ * @return {@link SQLManager}
+ */
+ @NotNull SQLManager getManager();
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLManager.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLManager.java
index 0ac0ece..c38acce 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLManager.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/SQLManager.java
@@ -19,145 +19,145 @@ import java.util.logging.Logger;
public interface SQLManager {
- Logger getLogger();
+ Logger getLogger();
- boolean isDebugMode();
+ boolean isDebugMode();
- void setDebugMode(boolean enable);
+ void setDebugMode(boolean enable);
- /**
- * 得到连接池源
- *
- * @return DataSource
- */
- @NotNull DataSource getDataSource();
+ /**
+ * 得到连接池源
+ *
+ * @return DataSource
+ */
+ @NotNull DataSource getDataSource();
- /**
- * 得到一个数据库连接实例
- *
- * @return Connection
- * @throws SQLException 见 {@link DataSource#getConnection()}
- */
- @NotNull Connection getConnection() throws SQLException;
+ /**
+ * 得到一个数据库连接实例
+ *
+ * @return Connection
+ * @throws SQLException 见 {@link DataSource#getConnection()}
+ */
+ @NotNull Connection getConnection() throws SQLException;
- /**
- * 得到正使用的查询。
- *
- * @return 查询列表
- */
- @NotNull Map getActiveQuery();
+ /**
+ * 得到正使用的查询。
+ *
+ * @return 查询列表
+ */
+ @NotNull Map getActiveQuery();
- /**
- * 执行一条不需要返回结果的SQL语句(多用于UPDATE、REPLACE、DELETE方法)
- * 该方法使用 Statement 实现,请注意SQL注入风险!
- *
- * @param sql SQL语句内容
- * @return 更新的行数
- * @see SQLUpdateAction
- */
- @Nullable Integer executeSQL(String sql);
+ /**
+ * 执行一条不需要返回结果的SQL语句(多用于UPDATE、REPLACE、DELETE方法)
+ * 该方法使用 Statement 实现,请注意SQL注入风险!
+ *
+ * @param sql SQL语句内容
+ * @return 更新的行数
+ * @see SQLUpdateAction
+ */
+ @Nullable Integer executeSQL(String sql);
- /**
- * 执行一条不需要返回结果的预处理SQL更改(UPDATE、REPLACE、DELETE)
- *
- * @param sql SQL语句内容
- * @param params SQL语句中 ? 的对应参数
- * @return 更新的行数
- * @see PreparedSQLUpdateAction
- */
- @Nullable Integer executeSQL(String sql, Object[] params);
+ /**
+ * 执行一条不需要返回结果的预处理SQL更改(UPDATE、REPLACE、DELETE)
+ *
+ * @param sql SQL语句内容
+ * @param params SQL语句中 ? 的对应参数
+ * @return 更新的行数
+ * @see PreparedSQLUpdateAction
+ */
+ @Nullable Integer executeSQL(String sql, Object[] params);
- /**
- * 执行多条不需要返回结果的SQL更改(UPDATE、REPLACE、DELETE)
- *
- * @param sql SQL语句内容
- * @param paramsBatch SQL语句中对应?的参数组
- * @return 对应参数返回的行数
- * @see PreparedSQLUpdateBatchAction
- */
- @Nullable List executeSQLBatch(String sql, Iterable