build();
-
- @NotNull String getTableName();
-
- /**
- * 得到表的设定。
- * 若未使用 {@link #setTableSettings(String)} 方法则会采用 {@link #defaultTablesSettings()} 。
- *
- * @return TableSettings
- */
- @NotNull String getTableSettings();
-
- TableCreateBuilder setTableSettings(@NotNull String settings);
-
- /**
- * 设定表的标注,一般用于解释该表的作用。
- *
- * @param comment 表标注
- * @return {@link TableCreateBuilder}
- */
- TableCreateBuilder setTableComment(@Nullable String comment);
-
- /**
- * 直接设定表的所有列信息
- *
- * @param columns 列的相关信息 (包括列设定)
- * @return {@link TableCreateBuilder}
- */
- TableCreateBuilder setColumns(@NotNull String... columns);
-
- /**
- * 为该表添加一个列
- *
- * @param column 列的相关信息
- *
如 `uuid` VARCHAR(36) NOT NULL UNIQUE KEY
- * @return {@link TableCreateBuilder}
- */
- TableCreateBuilder addColumn(@NotNull String column);
-
- /**
- * 为该表添加一个列
- *
- * @param columnName 列名
- * @param settings 列的设定
- *
如 VARCHAR(36) NOT NULL UNIQUE KEY
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings) {
- Objects.requireNonNull(columnName, "columnName could not be null");
- return addColumn(withBackQuote(columnName) + " " + settings);
- }
-
- /**
- * 为该表添加一个列
- *
- * @param columnName 列名
- * @param settings 列的设定
- *
如 VARCHAR(36) NOT NULL UNIQUE KEY
- * @param comments 列的注解,用于解释该列数据的作用
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addColumn(@NotNull String columnName, @NotNull String settings, @NotNull String comments) {
- return addColumn(columnName, settings + " COMMENT " + withQuote(comments));
- }
-
- /**
- * 为该表添加一个自增列
- *
自增列强制要求为数字类型,非空,且为UNIQUE。
- *
注意:一个表只允许有一个自增列!
- *
- * @param columnName 列名
- * @param numberType 数字类型,若省缺则为 {@link NumberType#INT}
- * @param asPrimaryKey 是否为主键,若为false则设定为唯一键
- * @param unsigned 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)
- * @return {@link TableCreateBuilder}
- */
- TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, @Nullable NumberType numberType,
- boolean asPrimaryKey, boolean unsigned);
-
- /**
- * 为该表添加一个INT类型的自增主键列
- *
自增列强制要求为数字类型,非空,且为UNIQUE。
- *
注意:一个表只允许有一个自增列!
- *
- * @param columnName 列名
- * @param asPrimaryKey 是否为主键,若为false则设定为唯一键
- * @param unsigned 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName,
- boolean asPrimaryKey, boolean unsigned) {
- return addAutoIncrementColumn(columnName, NumberType.INT, asPrimaryKey, unsigned);
- }
-
-
- /**
- * 为该表添加一个INT类型的自增列
- *
自增列强制要求为数字类型,非空,且为UNIQUE。
- *
注意:一个表只允许有一个自增列!
- *
- * @param columnName 列名
- * @param asPrimaryKey 是否为主键,若为false则设定为唯一键
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName, boolean asPrimaryKey) {
- return addAutoIncrementColumn(columnName, asPrimaryKey, true);
- }
-
- /**
- * 为该表添加一个INT类型的自增主键列
- *
自增列强制要求为数字类型,非空,且为UNIQUE。
- *
注意:一个表只允许有一个自增列!
- *
- * @param columnName 列名
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addAutoIncrementColumn(@NotNull String columnName) {
- return addAutoIncrementColumn(columnName, true);
- }
-
- /**
- * 设定表中的某列为索引或键。
- *
- *
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
- *
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE 和DELETE。
- *
因此,请合理的设计索引。
- *
- * @param type 索引类型
- * @param columnName 索引包含的列
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder setIndex(@NotNull String columnName,
- @NotNull IndexType type) {
- return setIndex(type, null, columnName);
- }
-
- /**
- * 设定表中的某列为索引或键。
- *
- *
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
- *
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE 和DELETE。
- *
因此,请合理的设计索引。
- *
- * @param type 索引类型
- * @param indexName 索引名称,缺省时将根据第一个索引列赋一个名称
- * @param columnName 索引包含的列
- * @param moreColumns 联合索引需要包含的列
- * @return {@link TableCreateBuilder}
- */
- TableCreateBuilder setIndex(@NotNull IndexType type, @Nullable String indexName,
- @NotNull String columnName, @NotNull String... moreColumns);
-
-
- /**
- * 以本表位从表,为表中某列设定自参照外键(即自参照完整性)。
- *
- *
外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
- *
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
- *
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
- *
- * @param tableColumn 本表中的列
- * @param foreignColumn 外键关联表中对应的关联列,必须为目标表的主键,即 {@link IndexType#PRIMARY_KEY}
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addForeignKey(@NotNull String tableColumn, @NotNull String foreignColumn) {
- return addForeignKey(tableColumn, getTableName(), foreignColumn);
- }
-
- /**
- * 以本表位从表,为表中某列设定外键。
- *
- *
外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
- *
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
- *
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
- *
- * @param tableColumn 本表中的列
- * @param foreignTable 外键关联主表,必须为已存在的表或本表,且必须有主键。
- * @param foreignColumn 外键关联主表中对应的关联列,须满足
- *
1. 为主表的主键,即 {@link IndexType#PRIMARY_KEY}
- *
2. 数据类型必须和所要建立主键的列的数据类型相同。
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addForeignKey(@NotNull String tableColumn,
- @NotNull String foreignTable, @NotNull String foreignColumn) {
- return addForeignKey(tableColumn, null, foreignTable, foreignColumn);
- }
-
- /**
- * 以本表位从表,为表中某列设定外键。
- *
- *
外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
- *
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
- *
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
- *
- * @param tableColumn 本表中的列
- * @param constraintName 约束名,缺省时将使用参数自动生成,如 fk_[tableColumn]_[foreignTable]
- * @param foreignTable 外键关联主表,必须为已存在的表或本表,且必须有主键。
- * @param foreignColumn 外键关联主表中对应的关联列,须满足
- *
1. 为主表的主键,即 {@link IndexType#PRIMARY_KEY}
- *
2. 数据类型必须和所要建立主键的列的数据类型相同。
- * @return {@link TableCreateBuilder}
- */
- default TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
- @NotNull String foreignTable, @NotNull String foreignColumn) {
- return addForeignKey(tableColumn, constraintName, foreignTable, foreignColumn, null, null);
- }
-
- /**
- * 以本表位从表,为表中某列设定外键。
- *
- *
外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
- *
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
- *
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。
- *
- * @param tableColumn 本表中的列
- * @param constraintName 约束名,缺省时将使用参数自动生成,如 fk_[tableColumn]_[foreignTable]
- * @param foreignTable 外键关联主表,必须为已存在的表或本表,且必须有主键。
- * @param foreignColumn 外键关联主表中对应的关联列,须满足
- *
1. 为主表的主键,即 {@link IndexType#PRIMARY_KEY}
- *
2. 数据类型必须和所要建立主键的列的数据类型相同。
- * @param updateRule 在外键被更新时采用的规则,缺省时默认为{@link ForeignKeyRule#RESTRICT}
- * @param deleteRule 在外键被删除时采用的规则,缺省时默认为{@link ForeignKeyRule#RESTRICT}
- * @return {@link TableCreateBuilder}
- */
- TableCreateBuilder addForeignKey(@NotNull String tableColumn, @Nullable String constraintName,
- @NotNull String foreignTable, @NotNull String foreignColumn,
- @Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule);
-
- default String defaultTablesSettings() {
- return "ENGINE=InnoDB DEFAULT CHARSET=utf8";
- }
-
-}
diff --git a/src/main/java/com/io/yutian/elementoriginlib/sql/api/builder/TableMetadataBuilder.java b/src/main/java/com/io/yutian/elementoriginlib/sql/api/builder/TableMetadataBuilder.java
deleted file mode 100644
index 5bcd922..0000000
--- a/src/main/java/com/io/yutian/elementoriginlib/sql/api/builder/TableMetadataBuilder.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.io.yutian.elementoriginlib.sql.api.builder;
-
-import com.io.yutian.elementoriginlib.sql.api.SQLBuilder;
-import com.io.yutian.elementoriginlib.sql.api.function.SQLFunction;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.annotations.Unmodifiable;
-
-import java.sql.ResultSet;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-
-public interface TableMetadataBuilder extends SQLBuilder {
-
- /**
- * @return 本表是否存在
- */
- CompletableFuture validateExist();
-
- /**
- * 对表内的数据列元数据进行读取
- *
- * @param columnPattern 列的名称匹配表达式, 为空则匹配所有列
- * @param reader 读取的方法
- * @param 结果类型
- * @return 读取结果
- */
- CompletableFuture fetchColumns(@Nullable String columnPattern,
- @NotNull SQLFunction reader);
-
- /**
- * @param columnPattern 需要判断的列名表达式
- * @return 对应列是否存在
- */
- CompletableFuture isColumnExists(@NotNull String columnPattern);
-
- /**
- * 列出所有表内的全部列。
- *
- * @return 表内全部数据列的列名
- */
- default CompletableFuture<@Unmodifiable Set> listColumns() {
- return listColumns(null);
- }
-
- /**
- * 列出所有满足表达式的列。
- *
- * @param columnPattern 列名表达式,为空则列出全部
- * @return 所有满足表达式的列名
- */
- CompletableFuture<@Unmodifiable Set> listColumns(@Nullable String columnPattern);
-
- // More coming soon.
-
-}
diff --git a/src/main/java/com/io/yutian/elementoriginlib/sql/api/builder/TableQueryBuilder.java b/src/main/java/com/io/yutian/elementoriginlib/sql/api/builder/TableQueryBuilder.java
deleted file mode 100644
index f227418..0000000
--- a/src/main/java/com/io/yutian/elementoriginlib/sql/api/builder/TableQueryBuilder.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.io.yutian.elementoriginlib.sql.api.builder;
-
-import com.io.yutian.elementoriginlib.sql.api.action.query.PreparedQueryAction;
-import org.jetbrains.annotations.NotNull;
-
-public interface TableQueryBuilder extends ConditionalBuilder