diff --git a/easysql-api/pom.xml b/easysql-api/pom.xml
index 2bfb7cf..5e5a5e7 100644
--- a/easysql-api/pom.xml
+++ b/easysql-api/pom.xml
@@ -5,7 +5,7 @@
cc.carm.lib
easysql-parent
- 0.2.5
+ 0.2.6
4.0.0
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 f764077..63699f3 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
@@ -1,5 +1,6 @@
package cc.carm.lib.easysql.api;
+import cc.carm.lib.easysql.api.function.SQLFunction;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -7,13 +8,12 @@ import java.sql.SQLException;
import java.util.UUID;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
-import java.util.function.Function;
/**
* SQLAction 是用于承载SQL语句并进行处理、返回的基本类。
*
*
- * - 同步执行 {@link #execute()}, {@link #execute(Function, BiConsumer)}
+ *
- 同步执行 {@link #execute()}, {@link #execute(SQLFunction, BiConsumer)}
*
同步执行方法中有会抛出异常的方法与不抛出异常的方法,
*
若选择不抛出异常,则返回值可能为空,需要特殊处理。
*
@@ -23,8 +23,6 @@ import java.util.function.Function;
*
默认的异常处理器为 {@link #defaultExceptionHandler()}
*
*
- * 注意: 无论是否异步,都不需要自行关闭ResultSet,本API已自动关闭
- *
* @param 需要返回的类型
* @author CarmJos
* @since 0.0.1
@@ -74,20 +72,6 @@ public interface SQLAction {
*/
@NotNull T execute() throws SQLException;
- /**
- * 执行语句并处理返回值
- *
- * @param function 处理方法
- * @param exceptionHandler 异常处理器 默认为 {@link #defaultExceptionHandler()}
- * @param 需要返回的内容
- * @return 指定类型数据
- */
- @Nullable
- default R execute(@NotNull Function function, @Nullable BiConsumer> exceptionHandler) {
- T value = execute(exceptionHandler);
- if (value == null) return null;
- else return function.apply(value);
- }
/**
* 执行语句并返回值
@@ -97,14 +81,44 @@ public interface SQLAction {
*/
@Nullable
default T execute(@Nullable BiConsumer> exceptionHandler) {
- if (exceptionHandler == null) exceptionHandler = defaultExceptionHandler();
- T value = null;
+ return execute(t -> t, exceptionHandler);
+ }
+
+ /**
+ * 执行语句并处理返回值
+ *
+ * @param function 处理方法
+ * @param 需要返回的内容
+ * @return 指定类型数据
+ * @throws SQLException 当SQL操作出现问题时抛出
+ */
+ @Nullable
+ default R executeFunction(@NotNull SQLFunction function) throws SQLException {
try {
- value = execute();
+ T value = execute();
+ return function.apply(value);
} catch (SQLException exception) {
- exceptionHandler.accept(exception, this);
+ 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;
}
- return value;
}
/**
@@ -131,6 +145,12 @@ public interface SQLAction {
*/
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);
+ }
+
/**
* @return 默认的异常处理器
*/
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/query/QueryAction.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/query/QueryAction.java
index fb68cc4..670ff7c 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/query/QueryAction.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/query/QueryAction.java
@@ -1,7 +1,51 @@
package cc.carm.lib.easysql.api.action.query;
import cc.carm.lib.easysql.api.SQLAction;
+import cc.carm.lib.easysql.api.function.SQLFunction;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import java.sql.SQLException;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+
+/**
+ * SQLQueryAction 是用于承载SQL查询语句并进行处理、返回并自动关闭连接的基本类。
+ *
+ *
+ * - 同步执行 {@link #execute()}, {@link #execute(SQLFunction, BiConsumer)}
+ *
同步执行方法中有会抛出异常的方法与不抛出异常的方法,
+ *
若选择不抛出异常,则返回值可能为空,需要特殊处理。
+ *
+ * - 异步执行 {@link #executeAsync(Consumer, BiConsumer)}
+ *
异步执行时将提供成功与异常两种处理方式
+ *
可自行选择是否对数据或异常进行处理
+ *
默认的异常处理器为 {@link #defaultExceptionHandler()}
+ *
+ *
+ * 注意: 无论是否异步,都不需要自行关闭ResultSet,本API已自动关闭
+ *
+ * @author CarmJos
+ * @since 0.2.6
+ */
public interface QueryAction extends SQLAction {
+ /**
+ * 执行语句并处理返回值
+ *
+ * @param function 处理方法
+ * @param 需要返回的内容
+ * @return 指定类型数据
+ * @throws SQLException 当SQL操作出现问题时抛出
+ */
+ @Nullable
+ default R executeFunction(@NotNull SQLFunction function)
+ throws SQLException {
+ try (SQLQuery value = execute()) {
+ return function.apply(value);
+ } catch (SQLException exception) {
+ throw new SQLException(exception);
+ }
+ }
+
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLFunction.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLFunction.java
new file mode 100644
index 0000000..582371d
--- /dev/null
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLFunction.java
@@ -0,0 +1,12 @@
+package cc.carm.lib.easysql.api.function;
+
+import org.jetbrains.annotations.Nullable;
+
+import java.sql.SQLException;
+
+public interface SQLFunction {
+
+ @Nullable
+ R apply(T t) throws SQLException;
+
+}
diff --git a/easysql-beecp/pom.xml b/easysql-beecp/pom.xml
index 50c4b78..1249eb9 100644
--- a/easysql-beecp/pom.xml
+++ b/easysql-beecp/pom.xml
@@ -5,14 +5,14 @@
easysql-parent
cc.carm.lib
- 0.2.5
+ 0.2.6
4.0.0
easysql-beecp
jar
- 10-EasySQL-BeeCP
+ 12-EasySQL-BeeCP
EasySQL的应用部分。此为BeeCP版本。
https://github.com/CarmJos/EasySQL
diff --git a/easysql-demo/pom.xml b/easysql-demo/pom.xml
index dee9467..5e8343b 100644
--- a/easysql-demo/pom.xml
+++ b/easysql-demo/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.5
+ 0.2.6
4.0.0
diff --git a/easysql-demo/src/main/java/EasySQLDemo.java b/easysql-demo/src/main/java/EasySQLDemo.java
index 5fb87f8..6354169 100644
--- a/easysql-demo/src/main/java/EasySQLDemo.java
+++ b/easysql-demo/src/main/java/EasySQLDemo.java
@@ -49,16 +49,11 @@ public class EasySQLDemo {
.build().execute(query -> {
//可以直接进行数据处理
ResultSet result = query.getResultSet();
- try {
- if (result != null && result.next()) {
- return UUIDUtil.toUUID(result.getString("uuid"));
- }
- } catch (SQLException ignored) {
- }
- return null;
+ return result.next() ? UUIDUtil.toUUID(result.getString("uuid")) : null;
}, (exception, action) -> {
// 处理异常,不想处理直接填null
});
+
}
public void sqlQueryAsync(SQLManager sqlManager) {
diff --git a/easysql-hikaricp/pom.xml b/easysql-hikaricp/pom.xml
index f968b49..3c57cd4 100644
--- a/easysql-hikaricp/pom.xml
+++ b/easysql-hikaricp/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.5
+ 0.2.6
4.0.0
diff --git a/easysql-impl/pom.xml b/easysql-impl/pom.xml
index a2d45a1..03a04c0 100644
--- a/easysql-impl/pom.xml
+++ b/easysql-impl/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.5
+ 0.2.6
4.0.0
diff --git a/pom.xml b/pom.xml
index 40d2540..c3f9b38 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
cc.carm.lib
easysql-parent
pom
- 0.2.5
+ 0.2.6
easysql-api