Class TableCreateBuilderImpl

    • Field Detail

      • tableName

        @NotNull
        protected final @NotNull java.lang.String tableName
    • Constructor Detail

      • TableCreateBuilderImpl

        public TableCreateBuilderImpl​(SQLManagerImpl manager,
                                      @NotNull
                                      @NotNull java.lang.String tableName)
    • Method Detail

      • 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:
        addAutoIncrementColumn in interface TableCreateBuilder
        Parameters:
        columnName - 列名
        numberType - 数字类型,若省缺则为 NumberType.INT
        asPrimaryKey - 是否为主键,若为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:
        setIndex in interface TableCreateBuilder
        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:
        addForeignKey in interface TableCreateBuilder
        Parameters:
        tableColumn - 本表中的列
        constraintName - 约束名,缺省时将使用参数自动生成,如 fk_[tableColumn]_[foreignTable]
        foreignTable - 外键关联主表,必须为已存在的表或本表,且必须有主键。
        foreignColumn - 外键关联主表中对应的关联列,须满足

        1. 为主表的主键,即 IndexType.PRIMARY_KEY

        2. 数据类型必须和所要建立主键的列的数据类型相同。

        updateRule - 在外键被更新时采用的规则,缺省时默认为ForeignKeyRule.RESTRICT
        deleteRule - 在外键被删除时采用的规则,缺省时默认为ForeignKeyRule.RESTRICT
        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)