diff --git a/easysql-api/pom.xml b/easysql-api/pom.xml
index f393f91..4f0cf40 100644
--- a/easysql-api/pom.xml
+++ b/easysql-api/pom.xml
@@ -5,7 +5,7 @@
cc.carm.lib
easysql-parent
- 0.2.9
+ 0.2.10
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 4cfec06..259a756 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
@@ -4,11 +4,11 @@ import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
import cc.carm.lib.easysql.api.function.SQLFunction;
import cc.carm.lib.easysql.api.function.SQLHandler;
import cc.carm.lib.easysql.api.function.impl.DefaultSQLExceptionHandler;
+import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
-import java.util.Optional;
import java.util.UUID;
/**
@@ -22,7 +22,8 @@ import java.util.UUID;
*
异步执行 {@link #executeAsync(SQLHandler, SQLExceptionHandler)}
*
异步执行时将提供成功与异常两种处理方式
*
可自行选择是否对数据或异常进行处理
- *
默认的异常处理器为 {@link #defaultExceptionHandler()}
+ *
默认的异常处理器为 {@link #defaultExceptionHandler()}
+ *
若有特殊需要,可通过{@link #setExceptionHandler(SQLExceptionHandler)} 方法修改默认的处理器
*
*
* @param 需要返回的类型
@@ -97,8 +98,24 @@ public interface SQLAction {
@Nullable
default R execute(@NotNull SQLFunction function,
@Nullable SQLExceptionHandler exceptionHandler) {
+ return execute(function, null, exceptionHandler);
+ }
+
+ /**
+ * 执行语句并处理返回值
+ *
+ * @param function 处理方法
+ * @param exceptionHandler 异常处理器 默认为 {@link #defaultExceptionHandler()}
+ * @param 需要返回的内容
+ * @return 指定类型数据
+ */
+ @Nullable
+ @Contract("_,!null,_ -> !null")
+ default R execute(@NotNull SQLFunction function,
+ @Nullable R defaultResult,
+ @Nullable SQLExceptionHandler exceptionHandler) {
try {
- return executeFunction(function);
+ return executeFunction(function, defaultResult);
} catch (SQLException exception) {
handleException(exceptionHandler, exception);
return null;
@@ -115,9 +132,26 @@ public interface SQLAction {
*/
@Nullable
default R executeFunction(@NotNull SQLFunction function) throws SQLException {
+ return executeFunction(function, null);
+ }
+
+ /**
+ * 执行语句并处理返回值
+ *
+ * @param defaultResult 默认结果,若处理后的结果为null,则返回该值
+ * @param function 处理方法
+ * @param 需要返回的内容
+ * @return 指定类型数据
+ * @throws SQLException 当SQL操作出现问题时抛出
+ */
+ @Nullable
+ @Contract("_,!null -> !null")
+ default R executeFunction(@NotNull SQLFunction function,
+ @Nullable R defaultResult) throws SQLException {
try {
T value = execute();
- return function.apply(value);
+ R result = function.apply(value);
+ return result == null ? defaultResult : result;
} catch (SQLException exception) {
throw new SQLException(exception);
}
@@ -157,8 +191,7 @@ public interface SQLAction {
* @return 默认的异常处理器
*/
default SQLExceptionHandler defaultExceptionHandler() {
- return Optional.ofNullable(DefaultSQLExceptionHandler.getCustomHandler())
- .orElse(new DefaultSQLExceptionHandler(getManager()));
+ return DefaultSQLExceptionHandler.get(getManager().getLogger());
}
/**
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/SQLUpdateBatchAction.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/SQLUpdateBatchAction.java
index fe73759..a7e4d75 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/SQLUpdateBatchAction.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/SQLUpdateBatchAction.java
@@ -16,6 +16,10 @@ public interface SQLUpdateBatchAction extends SQLAction> {
*/
SQLUpdateBatchAction addBatch(@NotNull String sql);
+ default @NotNull String getSQLContent() {
+ return getSQLContents().get(0);
+ }
+
List getSQLContents();
@Override
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 915bf64..f94689e 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
@@ -5,6 +5,7 @@ import cc.carm.lib.easysql.api.SQLQuery;
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
import cc.carm.lib.easysql.api.function.SQLFunction;
import cc.carm.lib.easysql.api.function.SQLHandler;
+import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -34,16 +35,20 @@ public interface QueryAction extends SQLAction {
/**
* 执行语句并处理返回值
*
- * @param function 处理方法
- * @param 需要返回的内容
+ * @param defaultResult 默认结果,若处理后的结果为null,则返回该值
+ * @param function 处理方法
+ * @param 需要返回的内容
* @return 指定类型数据
* @throws SQLException 当SQL操作出现问题时抛出
*/
@Nullable
- default R executeFunction(@NotNull SQLFunction function)
- throws SQLException {
+ @Contract("!null, _ -> !null")
+ default R executeFunction(@Nullable R defaultResult,
+ @NotNull SQLFunction function) throws SQLException {
+
try (SQLQuery value = execute()) {
- return function.apply(value);
+ R result = function.apply(value);
+ return result == null ? defaultResult : result;
} catch (SQLException exception) {
throw new SQLException(exception);
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableAlertBuilder.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableAlertBuilder.java
new file mode 100644
index 0000000..53ad2c4
--- /dev/null
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/builder/TableAlertBuilder.java
@@ -0,0 +1,6 @@
+package cc.carm.lib.easysql.api.builder;
+
+import cc.carm.lib.easysql.api.SQLBuilder;
+
+public interface TableAlertBuilder extends SQLBuilder {
+}
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
index 66697a7..734a40a 100644
--- 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
@@ -9,6 +9,6 @@ import java.sql.SQLException;
public interface SQLFunction {
@Nullable
- R apply(T t) throws SQLException;
+ R apply(@NotNull T t) throws SQLException;
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/impl/DefaultSQLExceptionHandler.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/impl/DefaultSQLExceptionHandler.java
index 2fad658..307337f 100644
--- a/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/impl/DefaultSQLExceptionHandler.java
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/impl/DefaultSQLExceptionHandler.java
@@ -1,11 +1,12 @@
package cc.carm.lib.easysql.api.function.impl;
import cc.carm.lib.easysql.api.SQLAction;
-import cc.carm.lib.easysql.api.SQLManager;
import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
+import java.util.logging.Logger;
public class DefaultSQLExceptionHandler implements SQLExceptionHandler {
@@ -19,20 +20,25 @@ public class DefaultSQLExceptionHandler implements SQLExceptionHandler {
return customDefaultHandler;
}
- private final SQLManager sqlManager;
-
- public DefaultSQLExceptionHandler(SQLManager manager) {
- this.sqlManager = manager;
+ public static @NotNull SQLExceptionHandler get(Logger logger) {
+ if (getCustomHandler() != null) return getCustomHandler();
+ else return new DefaultSQLExceptionHandler(logger);
}
- protected SQLManager getManager() {
- return sqlManager;
+ private final Logger logger;
+
+ public DefaultSQLExceptionHandler(Logger logger) {
+ this.logger = logger;
+ }
+
+ protected Logger getLogger() {
+ return logger;
}
@Override
public void accept(SQLException exception, SQLAction> sqlAction) {
- getManager().getLogger().severe("Error when execute [" + sqlAction.getSQLContent() + "]");
- getManager().getLogger().severe(exception.getLocalizedMessage());
+ getLogger().severe("Error when execute [" + sqlAction.getSQLContent() + "]");
+ getLogger().severe(exception.getLocalizedMessage());
exception.printStackTrace();
}
diff --git a/easysql-beecp/pom.xml b/easysql-beecp/pom.xml
index ec77cf5..6eacace 100644
--- a/easysql-beecp/pom.xml
+++ b/easysql-beecp/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.9
+ 0.2.10
4.0.0
diff --git a/easysql-demo/pom.xml b/easysql-demo/pom.xml
index aa886cc..72ba230 100644
--- a/easysql-demo/pom.xml
+++ b/easysql-demo/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.9
+ 0.2.10
4.0.0
diff --git a/easysql-demo/src/main/java/EasySQLDemo.java b/easysql-demo/src/main/java/EasySQLDemo.java
index edf1314..c7b506c 100644
--- a/easysql-demo/src/main/java/EasySQLDemo.java
+++ b/easysql-demo/src/main/java/EasySQLDemo.java
@@ -19,6 +19,7 @@ public class EasySQLDemo {
.addColumn("email", "VARCHAR(32)")
.addColumn("phone", "VARCHAR(16)")
.addColumn("registerTime", "DATETIME NOT NULL")
+ .addColumn("INDEX `phone`") // 添加索引
.build().execute(null /* 不处理错误 */);
}
diff --git a/easysql-hikaricp/pom.xml b/easysql-hikaricp/pom.xml
index 9b15109..eb07d96 100644
--- a/easysql-hikaricp/pom.xml
+++ b/easysql-hikaricp/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.9
+ 0.2.10
4.0.0
diff --git a/easysql-impl/pom.xml b/easysql-impl/pom.xml
index d8c9ae7..495cb68 100644
--- a/easysql-impl/pom.xml
+++ b/easysql-impl/pom.xml
@@ -5,7 +5,7 @@
easysql-parent
cc.carm.lib
- 0.2.9
+ 0.2.10
4.0.0
diff --git a/easysql-impl/src/main/java/cc/carm/lib/easysql/action/SQLUpdateBatchActionImpl.java b/easysql-impl/src/main/java/cc/carm/lib/easysql/action/SQLUpdateBatchActionImpl.java
index 4fe29d6..3223c76 100644
--- a/easysql-impl/src/main/java/cc/carm/lib/easysql/action/SQLUpdateBatchActionImpl.java
+++ b/easysql-impl/src/main/java/cc/carm/lib/easysql/action/SQLUpdateBatchActionImpl.java
@@ -16,43 +16,38 @@ public class SQLUpdateBatchActionImpl
extends AbstractSQLAction>
implements SQLUpdateBatchAction {
- List sqlContents = new ArrayList<>();
+ List sqlContents = new ArrayList<>();
- public SQLUpdateBatchActionImpl(@NotNull SQLManagerImpl manager, @NotNull String sql) {
- super(manager, sql);
- this.sqlContents.add(sql);
- }
+ public SQLUpdateBatchActionImpl(@NotNull SQLManagerImpl manager, @NotNull String sql) {
+ super(manager, sql);
+ this.sqlContents.add(sql);
+ }
- @Override
- public @NotNull String getSQLContent() {
- return this.sqlContents.get(0);
- }
+ @Override
+ public @NotNull List getSQLContents() {
+ return this.sqlContents;
+ }
- @Override
- public @NotNull List getSQLContents() {
- return this.sqlContents;
- }
+ @Override
+ public SQLUpdateBatchAction addBatch(@NotNull String sql) {
+ this.sqlContents.add(sql);
+ return this;
+ }
- @Override
- public SQLUpdateBatchAction addBatch(@NotNull String sql) {
- this.sqlContents.add(sql);
- return this;
- }
+ @Override
+ public @NotNull List execute() throws SQLException {
+ Connection connection = getManager().getConnection();
+ Statement statement = connection.createStatement();
+ outputDebugMessage();
+ for (String content : this.sqlContents) {
+ statement.addBatch(content);
+ }
+ int[] executed = statement.executeBatch();
+ List returnedValues = Arrays.stream(executed).boxed().collect(Collectors.toList());
- @Override
- public @NotNull List execute() throws SQLException {
- Connection connection = getManager().getConnection();
- Statement statement = connection.createStatement();
- outputDebugMessage();
- for (String content : this.sqlContents) {
- statement.addBatch(content);
- }
- int[] executed = statement.executeBatch();
- List returnedValues = Arrays.stream(executed).boxed().collect(Collectors.toList());
+ statement.close();
+ connection.close();
- statement.close();
- connection.close();
-
- return returnedValues;
- }
+ return returnedValues;
+ }
}
diff --git a/pom.xml b/pom.xml
index 53fbde3..1414e13 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
cc.carm.lib
easysql-parent
pom
- 0.2.9
+ 0.2.10
easysql-api