1
mirror of https://github.com/CarmJos/EasySQL.git synced 2026-06-05 00:25:32 +08:00

chore(sql): 提供当前事务实现思路

This commit is contained in:
2022-10-17 23:43:49 +08:00
parent a88843f768
commit 934f9d841e
14 changed files with 135 additions and 53 deletions
@@ -2,6 +2,7 @@ package cc.carm.lib.easysql.api;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateAction;
import cc.carm.lib.easysql.api.action.PreparedSQLUpdateBatchAction;
import cc.carm.lib.easysql.api.transaction.SQLTransaction;
import cc.carm.lib.easysql.api.builder.*;
import cc.carm.lib.easysql.api.function.SQLBiFunction;
import cc.carm.lib.easysql.api.function.SQLFunction;
@@ -101,6 +102,8 @@ public interface NewSQLManager {
*/
@NotNull QueryBuilder createQuery();
@NotNull SQLTransaction createTransaction();
/**
* 创建一条插入操作。
*
@@ -10,7 +10,7 @@ public interface PreparedSQLUpdateAction<T extends Number> extends SQLUpdateActi
* @param params 参数内容
* @return {@link PreparedSQLUpdateAction}
*/
PreparedSQLUpdateAction<T> params(Object... params);
PreparedSQLUpdateAction<T> values(Object... params);
/**
* 设定SQL语句中所有 ? 对应的参数
@@ -19,6 +19,6 @@ public interface PreparedSQLUpdateAction<T extends Number> extends SQLUpdateActi
* @return {@link PreparedSQLUpdateAction}
* @since 0.4.0
*/
PreparedSQLUpdateAction<T> params(@Nullable Iterable<Object> params);
PreparedSQLUpdateAction<T> values(@Nullable Iterable<Object> params);
}
@@ -1,19 +0,0 @@
package cc.carm.lib.easysql.api.action;
import cc.carm.lib.easysql.api.SQLManager;
public class SQLTransaction implements SQLManager {
public SQLTransaction savepoint() {
return this;
}
public SQLTransaction releaseSavepoint() {
return this;
}
public SQLTransaction rollbackToSavepoint() {
return this;
}
}
@@ -1,4 +0,0 @@
package cc.carm.lib.easysql.api.condition;
public class SQLCondition {
}
@@ -56,12 +56,12 @@ public interface SQLDebugHandler {
@Override
public void beforeExecute(@NotNull SQLAction<?> action, @NotNull List<@Nullable Object[]> params) {
logger.info("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
logger.info("┣# ActionUUID: {}", action.getActionUUID());
logger.info("┣# ActionType: {}", action.getClass().getSimpleName());
logger.info("┣# 操作编号: {}", action.getActionUUID());
logger.info("┣# 操作类型: {}", action.getClass().getSimpleName());
if (action.getSQLContents().size() == 1) {
logger.info("┣# SQLContent: {}", action.getSQLContents().get(0));
logger.info("┣# SQL语句: {}", action.getSQLContents().get(0));
} else {
logger.info("┣# SQLContents: ");
logger.info("┣# SQL语句: ");
int i = 0;
for (String sqlContent : action.getSQLContents()) {
logger.info("┃ - [{}] {}", ++i, sqlContent);
@@ -70,25 +70,25 @@ public interface SQLDebugHandler {
if (params.size() == 1) {
Object[] param = params.get(0);
if (param != null) {
logger.info("┣# SQLParam: {}", parseParams(param));
logger.info("┣# SQL参数: {}", parseParams(param));
}
} else if (params.size() > 1) {
logger.info("┣# SQLParams: ");
logger.info("┣# SQL参数: ");
int i = 0;
for (Object[] param : params) {
logger.info("┃ - [{}] {}", ++i, parseParams(param));
}
}
logger.info("┣# CreateTime: {}", action.getCreateTime(TimeUnit.MILLISECONDS));
logger.info("┣# 创建时间: {}", action.getCreateTime(TimeUnit.MILLISECONDS));
logger.info("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
}
@Override
public void afterQuery(@NotNull SQLQuery query, long executeNanoTime, long closeNanoTime) {
logger.info("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
logger.info("┣# ActionUUID: {}", query.getAction().getActionUUID());
logger.info("┣# SQLContent: {}", query.getSQLContent());
logger.info("┣# CloseTime: {} (cost {} ms)",
logger.info("┣# 操作编号: {}", query.getAction().getActionUUID());
logger.info("┣# SQL语句: {}", query.getSQLContent());
logger.info("┣# 关闭时间: {} (cost {} ms)",
TimeUnit.NANOSECONDS.toMillis(closeNanoTime),
((double) (closeNanoTime - executeNanoTime) / 1000000)
);
@@ -38,6 +38,7 @@ public interface SQLExceptionHandler extends BiConsumer<SQLException, SQLAction<
*
* @return 无输出的处理器。
*/
@Deprecated
static SQLExceptionHandler silent() {
return (exception, sqlAction) -> {
};
@@ -0,0 +1,7 @@
package cc.carm.lib.easysql.api.model;
public class SQLCondition {
}
@@ -0,0 +1,24 @@
package cc.carm.lib.easysql.api.model;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class TableColumn {
@NotNull String name;
@NotNull String type;
boolean notNull;
boolean primaryKey;
boolean uniqueKey;
boolean autoIncrement;
@Nullable String defaultValue;
@Nullable String onUpdate;
@Nullable String comment;
}
@@ -0,0 +1,16 @@
package cc.carm.lib.easysql.api.transaction;
import org.jetbrains.annotations.NotNull;
public interface SQLSavepoint {
int getID();
@NotNull String getName();
void release();
boolean isReleased();
}
@@ -0,0 +1,18 @@
package cc.carm.lib.easysql.api.transaction;
import cc.carm.lib.easysql.api.NewSQLManager;
import org.jetbrains.annotations.Nullable;
public interface SQLTransaction extends NewSQLManager, AutoCloseable {
void commit();
SQLSavepoint savepoint(String name);
default void rollback() {
rollback(null);
}
void rollback(@Nullable SQLSavepoint savepoint);
}