Package cc.carm.lib.easysql.builder.impl
Class TableCreateBuilderImpl
- java.lang.Object
-
- cc.carm.lib.easysql.builder.AbstractSQLBuilder
-
- cc.carm.lib.easysql.builder.impl.TableCreateBuilderImpl
-
- All Implemented Interfaces:
TableCreateBuilder,SQLBuilder
public class TableCreateBuilderImpl extends AbstractSQLBuilder implements TableCreateBuilder
-
-
Field Summary
Fields Modifier and Type Field Description protected @NotNull java.lang.StringtableName
-
Constructor Summary
Constructors Constructor Description TableCreateBuilderImpl(SQLManagerImpl manager, @NotNull java.lang.String tableName)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description TableCreateBuilderaddAutoIncrementColumn(@NotNull java.lang.String columnName, @Nullable NumberType numberType, boolean asPrimaryKey, boolean unsigned)为该表添加一个自增列TableCreateBuilderaddColumn(@NotNull java.lang.String column)为该表添加一个列TableCreateBuilderaddForeignKey(@NotNull java.lang.String tableColumn, @Nullable java.lang.String constraintName, @NotNull java.lang.String foreignTable, @NotNull java.lang.String foreignColumn, @Nullable ForeignKeyRule updateRule, @Nullable ForeignKeyRule deleteRule)以本表位从表,为表中某列设定外键。SQLUpdateActionbuild()将现有条件构建完整的SQL语句用于执行。protected static java.lang.StringbuildIndexSettings(@NotNull IndexType indexType, @Nullable java.lang.String indexName, @NotNull java.lang.String columnName, @NotNull java.lang.String... moreColumns)@NotNull java.lang.StringgetTableName()@NotNull java.lang.StringgetTableSettings()得到表的设定。TableCreateBuildersetColumns(@NotNull java.lang.String... columns)直接设定表的所有列信息TableCreateBuildersetIndex(@NotNull IndexType type, @Nullable java.lang.String indexName, @NotNull java.lang.String columnName, @NotNull java.lang.String... moreColumns)设定表中的某列为索引或键。TableCreateBuildersetTableComment(@Nullable java.lang.String comment)设定表的标注,一般用于解释该表的作用。TableCreateBuildersetTableSettings(@NotNull java.lang.String settings)-
Methods inherited from class cc.carm.lib.easysql.builder.AbstractSQLBuilder
getManager
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface cc.carm.lib.easysql.api.SQLBuilder
getManager
-
Methods inherited from interface cc.carm.lib.easysql.api.builder.TableCreateBuilder
addAutoIncrementColumn, addAutoIncrementColumn, addAutoIncrementColumn, addColumn, addColumn, addForeignKey, addForeignKey, addForeignKey, defaultTablesSettings, setIndex
-
-
-
-
Constructor Detail
-
TableCreateBuilderImpl
public TableCreateBuilderImpl(SQLManagerImpl manager, @NotNull @NotNull java.lang.String tableName)
-
-
Method Detail
-
getTableName
@NotNull public @NotNull java.lang.String getTableName()
- Specified by:
getTableNamein interfaceTableCreateBuilder
-
getTableSettings
@NotNull public @NotNull java.lang.String getTableSettings()
Description copied from interface:TableCreateBuilder得到表的设定。若未使用
TableCreateBuilder.setTableSettings(String)方法则会采用TableCreateBuilder.defaultTablesSettings()。- Specified by:
getTableSettingsin interfaceTableCreateBuilder- Returns:
- TableSettings
-
build
public SQLUpdateAction build()
Description copied from interface:TableCreateBuilder将现有条件构建完整的SQL语句用于执行。- Specified by:
buildin interfaceTableCreateBuilder- Returns:
SQLUpdateAction
-
addColumn
public TableCreateBuilder addColumn(@NotNull @NotNull java.lang.String column)
Description copied from interface:TableCreateBuilder为该表添加一个列- Specified by:
addColumnin interfaceTableCreateBuilder- Parameters:
column- 列的相关信息
如 `uuid` VARCHAR(36) NOT NULL UNIQUE KEY- Returns:
TableCreateBuilder
-
addAutoIncrementColumn
public TableCreateBuilder addAutoIncrementColumn(@NotNull @NotNull java.lang.String columnName, @Nullable @Nullable NumberType numberType, boolean asPrimaryKey, boolean unsigned)
Description copied from interface:TableCreateBuilder为该表添加一个自增列自增列强制要求为数字类型,非空,且为UNIQUE。
注意:一个表只允许有一个自增列!
- Specified by:
addAutoIncrementColumnin interfaceTableCreateBuilder- Parameters:
columnName- 列名numberType- 数字类型,若省缺则为NumberType.INTasPrimaryKey- 是否为主键,若为false则设定为唯一键unsigned- 是否采用 UNSIGNED (即无负数,可以增加自增键的最高数,建议为true)- Returns:
TableCreateBuilder
-
setIndex
public TableCreateBuilder setIndex(@NotNull @NotNull IndexType type, @Nullable @Nullable java.lang.String indexName, @NotNull @NotNull java.lang.String columnName, @NotNull @NotNull java.lang.String... moreColumns)
Description copied from interface:TableCreateBuilder设定表中的某列为索引或键。创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE 和DELETE。
因此,请合理的设计索引。- Specified by:
setIndexin interfaceTableCreateBuilder- Parameters:
type- 索引类型indexName- 索引名称,缺省时将根据第一个索引列赋一个名称columnName- 索引包含的列moreColumns- 联合索引需要包含的列- Returns:
TableCreateBuilder
-
addForeignKey
public TableCreateBuilder addForeignKey(@NotNull @NotNull java.lang.String tableColumn, @Nullable @Nullable java.lang.String constraintName, @NotNull @NotNull java.lang.String foreignTable, @NotNull @NotNull java.lang.String foreignColumn, @Nullable @Nullable ForeignKeyRule updateRule, @Nullable @Nullable ForeignKeyRule deleteRule)
Description copied from interface:TableCreateBuilder以本表位从表,为表中某列设定外键。外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。- Specified by:
addForeignKeyin interfaceTableCreateBuilder- Parameters:
tableColumn- 本表中的列constraintName- 约束名,缺省时将使用参数自动生成,如 fk_[tableColumn]_[foreignTable]foreignTable- 外键关联主表,必须为已存在的表或本表,且必须有主键。foreignColumn- 外键关联主表中对应的关联列,须满足1. 为主表的主键,即
IndexType.PRIMARY_KEY2. 数据类型必须和所要建立主键的列的数据类型相同。
updateRule- 在外键被更新时采用的规则,缺省时默认为ForeignKeyRule.RESTRICTdeleteRule- 在外键被删除时采用的规则,缺省时默认为ForeignKeyRule.RESTRICT- Returns:
TableCreateBuilder
-
setColumns
public TableCreateBuilder setColumns(@NotNull @NotNull java.lang.String... columns)
Description copied from interface:TableCreateBuilder直接设定表的所有列信息- Specified by:
setColumnsin interfaceTableCreateBuilder- Parameters:
columns- 列的相关信息 (包括列设定)- Returns:
TableCreateBuilder
-
setTableSettings
public TableCreateBuilder setTableSettings(@NotNull @NotNull java.lang.String settings)
- Specified by:
setTableSettingsin interfaceTableCreateBuilder
-
setTableComment
public TableCreateBuilder setTableComment(@Nullable @Nullable java.lang.String comment)
Description copied from interface:TableCreateBuilder设定表的标注,一般用于解释该表的作用。- Specified by:
setTableCommentin interfaceTableCreateBuilder- Parameters:
comment- 表标注- Returns:
TableCreateBuilder
-
buildIndexSettings
protected static java.lang.String buildIndexSettings(@NotNull @NotNull IndexType indexType, @Nullable @Nullable java.lang.String indexName, @NotNull @NotNull java.lang.String columnName, @NotNull @NotNull java.lang.String... moreColumns)
-
-