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 3fc43d5..5cfc2e1 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,23 +1,23 @@
package cc.carm.lib.easysql.api;
+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.NotNull;
import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
import java.util.UUID;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
/**
* SQLAction 是用于承载SQL语句并进行处理、返回的基本类。
*
*
- * - 同步执行 {@link #execute()}, {@link #execute(SQLFunction, BiConsumer)}
+ *
- 同步执行 {@link #execute()}, {@link #execute(SQLFunction, SQLExceptionHandler)}
*
同步执行方法中有会抛出异常的方法与不抛出异常的方法,
*
若选择不抛出异常,则返回值可能为空,需要特殊处理。
*
- * - 异步执行 {@link #executeAsync(Consumer, BiConsumer)}
+ *
- 异步执行 {@link #executeAsync(SQLHandler, SQLExceptionHandler)}
*
异步执行时将提供成功与异常两种处理方式
*
可自行选择是否对数据或异常进行处理
*
默认的异常处理器为 {@link #defaultExceptionHandler()}
@@ -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 SQLExceptionHandler 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 SQLExceptionHandler 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 SQLHandler 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 SQLHandler success,
+ @Nullable SQLExceptionHandler failure);
+ default void handleException(@Nullable SQLExceptionHandler 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 SQLExceptionHandler 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/action/SQLUpdateBatchAction.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/action/SQLUpdateBatchAction.java
index 179dfa4..85b09da 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
@@ -1,36 +1,35 @@
package cc.carm.lib.easysql.api.action;
import cc.carm.lib.easysql.api.SQLAction;
+import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
import org.jetbrains.annotations.NotNull;
-import java.sql.SQLException;
import java.util.List;
-import java.util.function.BiConsumer;
public interface SQLUpdateBatchAction extends SQLAction> {
- /**
- * 添加一条批量执行的SQL语句
- *
- * @param sql SQL语句
- * @return {@link SQLUpdateBatchAction}
- */
- SQLUpdateBatchAction addBatch(@NotNull String sql);
+ /**
+ * 添加一条批量执行的SQL语句
+ *
+ * @param sql SQL语句
+ * @return {@link SQLUpdateBatchAction}
+ */
+ SQLUpdateBatchAction addBatch(@NotNull String sql);
- List getSQLContents();
+ List getSQLContents();
- @Override
- default BiConsumer>> defaultExceptionHandler() {
- return (exception, action) -> {
- getManager().getLogger().severe("Error when execute SQLs : ");
- int i = 1;
- for (String content : getSQLContents()) {
- getManager().getLogger().severe("#" + i + " [" + content + "]");
- i++;
- }
- getManager().getLogger().severe(exception.getLocalizedMessage());
- exception.printStackTrace();
- };
- }
+ @Override
+ default SQLExceptionHandler> defaultExceptionHandler() {
+ return (exception, action) -> {
+ getManager().getLogger().severe("Error when execute SQLs : ");
+ int i = 1;
+ for (String content : getSQLContents()) {
+ getManager().getLogger().severe("#" + i + " [" + content + "]");
+ i++;
+ }
+ getManager().getLogger().severe(exception.getLocalizedMessage());
+ exception.printStackTrace();
+ };
+ }
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLExceptionHandler.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLExceptionHandler.java
new file mode 100644
index 0000000..ff6ef2a
--- /dev/null
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLExceptionHandler.java
@@ -0,0 +1,11 @@
+package cc.carm.lib.easysql.api.function;
+
+import cc.carm.lib.easysql.api.SQLAction;
+
+import java.sql.SQLException;
+import java.util.function.BiConsumer;
+
+@FunctionalInterface
+public interface SQLExceptionHandler extends BiConsumer> {
+
+}
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 f23a8da..66697a7 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
@@ -1,12 +1,14 @@
package cc.carm.lib.easysql.api.function;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
+@FunctionalInterface
public interface SQLFunction {
- @Nullable
- R apply(T t) throws SQLException;
+ @Nullable
+ R apply(T t) throws SQLException;
}
diff --git a/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLHandler.java b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLHandler.java
new file mode 100644
index 0000000..7fdcac4
--- /dev/null
+++ b/easysql-api/src/main/java/cc/carm/lib/easysql/api/function/SQLHandler.java
@@ -0,0 +1,23 @@
+package cc.carm.lib.easysql.api.function;
+
+import org.jetbrains.annotations.Contract;
+import org.jetbrains.annotations.NotNull;
+
+import java.sql.SQLException;
+import java.util.Objects;
+
+@FunctionalInterface
+public interface SQLHandler {
+
+ void accept(@NotNull T t) throws SQLException;
+
+ @NotNull
+ @Contract(pure = true)
+ default SQLHandler andThen(@NotNull SQLHandler super T> after) {
+ Objects.requireNonNull(after);
+ return (T t) -> {
+ accept(t);
+ after.accept(t);
+ };
+ }
+}
diff --git a/easysql-demo/src/main/java/EasySQLDemo.java b/easysql-demo/src/main/java/EasySQLDemo.java
index 9a1dc15..3fc59ff 100644
--- a/easysql-demo/src/main/java/EasySQLDemo.java
+++ b/easysql-demo/src/main/java/EasySQLDemo.java
@@ -9,100 +9,96 @@ import java.util.UUID;
public class EasySQLDemo {
- public void createTable(SQLManager sqlManager) {
- // 同步创建表
- sqlManager.createTable("users")
- .addColumn("id", "INT(11) AUTO_INCREMENT NOT NULL PRIMARY KEY")
- .addColumn("uuid", "VARCHAR(32) NOT NULL UNIQUE KEY")
- .addColumn("username", "VARCHAR(16) NOT NULL UNIQUE KEY")
- .addColumn("age", "INT(3) NOT NULL DEFAULT 1")
- .addColumn("email", "VARCHAR(32)")
- .addColumn("phone", "VARCHAR(16)")
- .addColumn("registerTime", "DATETIME NOT NULL")
- .build().execute(null /* 不处理错误 */);
- }
+ public void createTable(SQLManager sqlManager) {
+ // 同步创建表
+ sqlManager.createTable("users")
+ .addColumn("id", "INT(11) AUTO_INCREMENT NOT NULL PRIMARY KEY")
+ .addColumn("uuid", "VARCHAR(32) NOT NULL UNIQUE KEY")
+ .addColumn("username", "VARCHAR(16) NOT NULL UNIQUE KEY")
+ .addColumn("age", "INT(3) NOT NULL DEFAULT 1")
+ .addColumn("email", "VARCHAR(32)")
+ .addColumn("phone", "VARCHAR(16)")
+ .addColumn("registerTime", "DATETIME NOT NULL")
+ .build().execute(null /* 不处理错误 */);
+ }
- public void sqlQuery(SQLManager sqlManager) {
- // 同步SQL查询
- try (SQLQuery query = sqlManager.createQuery()
- .inTable("users") // 在users表中查询
- .selectColumns("id", "name") // 选中 id 与 name列
- .addCondition("age", ">", 18) // 限定 age 要大于5
- .addCondition("email", null) // 限定查询 email 字段为空
- .addNotNullCondition("phone") // 限定 phone 字段不为空
- .addTimeCondition("registerTime", // 时间字段
- System.currentTimeMillis() - 100000, //限制开始时间
- -1//不限制结束时间
- ).build().execute()) {
- ResultSet resultSet = query.getResultSet();
- //do something
+ public void sqlQuery(SQLManager sqlManager) {
+ // 同步SQL查询
+ try (SQLQuery query = sqlManager.createQuery()
+ .inTable("users") // 在users表中查询
+ .selectColumns("id", "name") // 选中 id 与 name列
+ .addCondition("age", ">", 18) // 限定 age 要大于5
+ .addCondition("email", null) // 限定查询 email 字段为空
+ .addNotNullCondition("phone") // 限定 phone 字段不为空
+ .addTimeCondition("registerTime", // 时间字段
+ System.currentTimeMillis() - 100000, //限制开始时间
+ -1//不限制结束时间
+ ).build().execute()) {
+ ResultSet resultSet = query.getResultSet();
+ //do something
- } catch (SQLException exception) {
- exception.printStackTrace();
- }
+ } catch (SQLException exception) {
+ exception.printStackTrace();
+ }
- UUID userUUID = sqlManager.createQuery()
- .inTable("users") // 在users表中查询
- .selectColumns("uuid")
- .addCondition("id", 5) // 限定 id 为 5
- .setLimit(1) // 只取出一个数据
- .build().execute(query -> {
- //可以直接进行数据处理
- ResultSet result = query.getResultSet();
- return result.next() ? UUIDUtil.toUUID(result.getString("uuid")) : null;
- }, (exception, action) -> {
- // 处理异常,不想处理直接填null
- });
+ UUID userUUID = sqlManager.createQuery()
+ .inTable("users") // 在users表中查询
+ .selectColumns("uuid")
+ .addCondition("id", 5) // 限定 id 为 5
+ .setLimit(1) // 只取出一个数据
+ .build().execute(query -> {
+ //可以直接进行数据处理
+ ResultSet result = query.getResultSet();
+ return result.next() ? UUIDUtil.toUUID(result.getString("uuid")) : null;
+ }, (exception, action) -> {
+ // 处理异常,不想处理直接填null
+ });
- }
+ }
- public void sqlQueryAsync(SQLManager sqlManager) {
- // 异步SQL查询
- sqlManager.createQuery()
- .inTable("users") // 在users表中查询
- .addCondition("id", 5) // 限定 id 为 5
- .setLimit(1) // 只取出一个数据
- .build().executeAsync(success -> {
- ResultSet resultSet = success.getResultSet();
- try {
- if (resultSet != null && resultSet.next()) {
- String username = resultSet.getString("username");
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }, (exception, action) -> {
- //do something
- long createTIme = action.getCreateTime();
- String shortID = action.getShortID();
- String sqlContent = action.getSQLContent();
- });
- }
+ public void sqlQueryAsync(SQLManager sqlManager) {
+ // 异步SQL查询
+ sqlManager.createQuery()
+ .inTable("users") // 在users表中查询
+ .addCondition("id", 5) // 限定 id 为 5
+ .setLimit(1) // 只取出一个数据
+ .build().executeAsync(success -> {
+ ResultSet resultSet = success.getResultSet();
+ if (resultSet != null && resultSet.next()) {
+ String username = resultSet.getString("username");
+ }
+ }, (exception, action) -> {
+ //do something
+ long createTIme = action.getCreateTime();
+ String shortID = action.getShortID();
+ String sqlContent = action.getSQLContent();
+ });
+ }
- public void sqlInsert(SQLManager sqlManager) {
- // 同步SQL插入 (不使用try-catch的情况下,返回的数值可能为空。)
- Integer id = sqlManager.createInsert("users")
- .setColumnNames("username", "phone", "email", "registerTime")
- .setParams("CarmJos", "18888888888", "carm@carm.cc", TimeDateUtils.getCurrentTime())
- .setKeyIndex(1) // 设定自增主键的index,将会在后续返回自增主键
- .execute((exception, action) -> {
- // 处理异常
- System.out.println("#" + action.getShortID() + " -> " + action.getSQLContent());
- exception.printStackTrace();
- });
+ public void sqlInsert(SQLManager sqlManager) {
+ // 同步SQL插入 (不使用try-catch的情况下,返回的数值可能为空。)
+ Integer id = sqlManager.createInsert("users")
+ .setColumnNames("username", "phone", "email", "registerTime")
+ .setParams("CarmJos", "18888888888", "carm@carm.cc", TimeDateUtils.getCurrentTime())
+ .setKeyIndex(1) // 设定自增主键的index,将会在后续返回自增主键
+ .execute((exception, action) -> {
+ // 处理异常
+ System.out.println("#" + action.getShortID() + " -> " + action.getSQLContent());
+ exception.printStackTrace();
+ });
- try {
- Integer userID = sqlManager.createInsert("users")
- .setColumnNames("username", "phone", "email", "registerTime")
- .setParams("CarmJos", "18888888888", "carm@carm.cc", TimeDateUtils.getCurrentTime())
- .setKeyIndex(1) // 设定自增主键的index,将会在后续返回自增主键
- .execute();
+ try {
+ Integer userID = sqlManager.createInsert("users")
+ .setColumnNames("username", "phone", "email", "registerTime")
+ .setParams("CarmJos", "18888888888", "carm@carm.cc", TimeDateUtils.getCurrentTime())
+ .setKeyIndex(1) // 设定自增主键的index,将会在后续返回自增主键
+ .execute();
- System.out.println("新用户的ID为 " + userID);
+ System.out.println("新用户的ID为 " + userID);
- } catch (SQLException exception) {
- exception.printStackTrace();
- }
- }
+ } catch (SQLException exception) {
+ exception.printStackTrace();
+ }
+ }
}
\ No newline at end of file
diff --git a/easysql-impl/src/main/java/cc/carm/lib/easysql/action/AbstractSQLAction.java b/easysql-impl/src/main/java/cc/carm/lib/easysql/action/AbstractSQLAction.java
index 343b675..45d7e40 100644
--- a/easysql-impl/src/main/java/cc/carm/lib/easysql/action/AbstractSQLAction.java
+++ b/easysql-impl/src/main/java/cc/carm/lib/easysql/action/AbstractSQLAction.java
@@ -1,6 +1,8 @@
package cc.carm.lib.easysql.action;
import cc.carm.lib.easysql.api.SQLAction;
+import cc.carm.lib.easysql.api.function.SQLExceptionHandler;
+import cc.carm.lib.easysql.api.function.SQLHandler;
import cc.carm.lib.easysql.manager.SQLManagerImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -8,88 +10,78 @@ import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
import java.util.UUID;
import java.util.function.BiConsumer;
-import java.util.function.Consumer;
public abstract class AbstractSQLAction implements SQLAction {
- private final @NotNull SQLManagerImpl sqlManager;
+ private final @NotNull SQLManagerImpl sqlManager;
- private final @NotNull UUID uuid;
- private final long createTime;
+ private final @NotNull UUID uuid;
+ private final long createTime;
- protected @NotNull String sqlContent;
+ protected @NotNull String sqlContent;
- protected @Nullable BiConsumer> exceptionHandler = null;
+ protected @Nullable BiConsumer> exceptionHandler = null;
- public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql) {
- this(manager, sql, System.currentTimeMillis());
- }
+ public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql) {
+ this(manager, sql, System.currentTimeMillis());
+ }
- public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql, @NotNull UUID uuid) {
- this(manager, sql, uuid, System.currentTimeMillis());
- }
+ public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql, @NotNull UUID uuid) {
+ this(manager, sql, uuid, System.currentTimeMillis());
+ }
- public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql, long createTime) {
- this(manager, sql, UUID.randomUUID(), createTime);
- }
+ public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql, long createTime) {
+ this(manager, sql, UUID.randomUUID(), createTime);
+ }
- public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql,
- @NotNull UUID uuid, long createTime) {
- this.sqlManager = manager;
- this.sqlContent = sql;
- this.uuid = uuid;
- this.createTime = createTime;
- }
+ public AbstractSQLAction(@NotNull SQLManagerImpl manager, @NotNull String sql,
+ @NotNull UUID uuid, long createTime) {
+ this.sqlManager = manager;
+ this.sqlContent = sql;
+ this.uuid = uuid;
+ this.createTime = createTime;
+ }
- @Override
- public @NotNull UUID getActionUUID() {
- return this.uuid;
- }
+ @Override
+ public @NotNull UUID getActionUUID() {
+ return this.uuid;
+ }
- @Override
- public @NotNull String getShortID() {
- return getActionUUID().toString().substring(0, 8);
- }
+ @Override
+ public @NotNull String getShortID() {
+ return getActionUUID().toString().substring(0, 8);
+ }
- @Override
- public long getCreateTime() {
- return this.createTime;
- }
+ @Override
+ public long getCreateTime() {
+ return this.createTime;
+ }
- @Override
- public @NotNull String getSQLContent() {
- return this.sqlContent.trim();
- }
+ @Override
+ public @NotNull String getSQLContent() {
+ return this.sqlContent.trim();
+ }
- @Override
- public @NotNull SQLManagerImpl getManager() {
- return this.sqlManager;
- }
+ @Override
+ public @NotNull SQLManagerImpl getManager() {
+ return this.sqlManager;
+ }
- protected void outputDebugMessage() {
- getManager().debug("#" + getShortID() + " ->" + getSQLContent());
- }
-
- public void handleException(SQLException exception) {
- if (this.exceptionHandler == null) {
- defaultExceptionHandler().accept(exception, this);
- } else {
- this.exceptionHandler.accept(exception, this);
- }
- }
-
- @Override
- public void executeAsync(Consumer success, BiConsumer> failure) {
- getManager().getExecutorPool().submit(() -> {
- try {
- T returnedValue = execute();
- if (success != null) success.accept(returnedValue);
- } catch (SQLException e) {
- (failure == null ? defaultExceptionHandler() : failure).accept(e, this);
- }
- });
- }
+ protected void outputDebugMessage() {
+ getManager().debug("#" + getShortID() + " ->" + getSQLContent());
+ }
+ @Override
+ public void executeAsync(SQLHandler success, SQLExceptionHandler failure) {
+ getManager().getExecutorPool().submit(() -> {
+ try {
+ T returnedValue = execute();
+ if (success != null) success.accept(returnedValue);
+ } catch (SQLException e) {
+ handleException(failure, e);
+ }
+ });
+ }
}
diff --git a/easysql-impl/src/main/java/cc/carm/lib/easysql/action/PreparedSQLBatchUpdateActionImpl.java b/easysql-impl/src/main/java/cc/carm/lib/easysql/action/PreparedSQLBatchUpdateActionImpl.java
index 0f4891e..c8d498a 100644
--- a/easysql-impl/src/main/java/cc/carm/lib/easysql/action/PreparedSQLBatchUpdateActionImpl.java
+++ b/easysql-impl/src/main/java/cc/carm/lib/easysql/action/PreparedSQLBatchUpdateActionImpl.java
@@ -14,7 +14,9 @@ import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
-public class PreparedSQLBatchUpdateActionImpl extends AbstractSQLAction> implements PreparedSQLUpdateBatchAction {
+public class PreparedSQLBatchUpdateActionImpl
+ extends AbstractSQLAction>
+ implements PreparedSQLUpdateBatchAction {
int keyIndex = -1;
List