根据Excel接口文档生成不同类型的数据创建表的sql

背景

在平时开发接口的时候,经常会根据接口文档将数据插入第三方数据库的情况,本篇我们介绍一下,读取excel将字段提取出来生成创表的sql。非常适用。

快速开始

话不多说,直接上代码。
表和列实体类

**
 * 实体表信息
 */
@Data
@TableName("`table_entity`")
public class TableEntity {

    @TableId(value = "table_id", type = IdType.AUTO)
    private Integer tableId;
    //表名
    @TableField(value = "table_name")
    private String tableName;
    //表注释
    @TableField(value = "table_comment")
    private String tableComment;
    //数据库名
    @TableField(value = "db_name")
    private String databaseName;
    //数据库类型 ORACLE,MSSQL,MYSQL
    @TableField(value = "db_type")
    private String databaseType;

    //数据库SCHEMA
    @TableField(value = "table_schema")
    private String tableSchema;

    //实体列名字
    private List<ColumnEntity> tableColumns;
@Data
@TableName("`column_entity`")
public class ColumnEntity {
    @TableId(value = "column_id", type = IdType.AUTO)
    @ExcelProperty(value="序号")
    private Integer columnId;
    //表的ID
    @ExcelProperty(value="表名ID")
    @TableField("table_id")
    private Integer tableId;
    //列名
    @ExcelProperty(value="列名")
    @TableField("column_name")
    private String columnName;
    //列注释
    @ExcelProperty(value="列注释")
    @TableField("column_desc")
    private String ColumnDesc;
    //类型
    @ExcelProperty(value="数据类型")
    @TableField("column_type")
    private String columnType;
    //长度
    @ExcelProperty(value="长度")
    @TableField("column_len")
    private String columnLen;
    //精度
    @ExcelProperty(value="精度")
    @TableField("precision")
    private String precision;
    //是否主键 Y true 都默认是主键
    @ExcelProperty(value="是否主键")
    @TableField("isPrimaryKey")
    private String isPrimaryKey;
    //是否允许为空 Y true 不允许为空
    @ExcelProperty(value="是否允许为空")
    @TableField("isNotNull")
    private String isNotNull;
    //是否索引列,方便进行生成建表语句的时候进行生成索引
    @ExcelProperty(value="是否索引列")
    @TableField("isIdxCol")
    private String isIdxCol;
}

建表语句

-- test.table_entity definition

CREATE TABLE `table_entity` (
  `table_id` int NOT NULL AUTO_INCREMENT COMMENT '表主键',
  `table_name` varchar(100) NOT NULL COMMENT '表名',
  `table_comment` varchar(200) DEFAULT NULL COMMENT '表注释',
  `db_name` varchar(10) DEFAULT NULL COMMENT '表对应的数据库名字',
  `db_type` varchar(10) DEFAULT NULL COMMENT '数据库类型',
  `table_schema` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '表对应的schema',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_by` varchar(100) DEFAULT NULL COMMENT '创建人',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `update_by` varchar(100) DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`table_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='表实体信息';
-- test.column_entity definition

CREATE TABLE `column_entity` (
  `column_id` int NOT NULL AUTO_INCREMENT COMMENT '列序号',
  `table_id` int NOT NULL COMMENT '表信息ID',
  `column_name` varchar(100) NOT NULL COMMENT '列名',
  `column_desc` varchar(100) DEFAULT NULL COMMENT '列注释',
  `column_type` varchar(100) NOT NULL COMMENT '数据类型',
  `column_len` int DEFAULT NULL COMMENT '列长度',
  `precision` int DEFAULT NULL COMMENT '精度',
  `isPrimaryKey` varchar(1) DEFAULT NULL COMMENT '是否是主键',
  `isNotNull` varchar(1) DEFAULT NULL COMMENT '是否允许为空',
  `isIdxCol` varchar(1) DEFAULT NULL COMMENT '是否索引列',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_by` varchar(10) DEFAULT NULL COMMENT '创建人',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `update_by` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人',
  PRIMARY KEY (`column_id`),
  KEY `column_entity_column_name_IDX` (`column_name`) USING BTREE,
  KEY `column_entity_FK` (`table_id`),
  CONSTRAINT `column_entity_FK` FOREIGN KEY (`table_id`) REFERENCES `table_entity` (`table_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='列信息表';

mapper类接口

/**
 * 表实体信息映射
 */
@Mapper
public interface TableEntityMapper extends BaseMapper<TableEntity> {

}
/**
 * 实体类映射接口
 */
@Mapper
public interface ColumnEntityMapper extends BaseMapper<ColumnEntity> {


}

创建表辅助类

目前写的支持mysql,sqlsever,oracle,需要可以自行修改,代码可以合并一下,现在分开的。

package com.elite.springboot.utils;

import com.elite.springboot.entity.ColumnEntity;
import com.elite.springboot.entity.ColumnTypeConstant;
import com.elite.springboot.entity.TableEntity;

import java.util.List;

/**
 * 创建表辅助类
 * create database.table(
 *   column type  isprimarykey isnull default comment '',
 *   column2 type ,
 *   ....
 * )
 *  列顺序
 *  1.mysql:  字段 类型 约束  默认值  注释
 *  2.oracle: 字段 类型 约束  默认值  注释单独进行拼接一个串。
 *  3.mssql:
 */
public class CreateTableHelper {
    /**
     * @Param:将实体类转换为mysql创表的sql
     * @return:
     */
    public static String getMysqlSqlByConvertEntity(TableEntity tableEntity) {
        StringBuffer sql = new StringBuffer();
        //存在则删除表
        sql.append("DROP TABLE IF EXISTS "+tableEntity.getTableName()+";");
        sql.append("CREATE TABLE `");
        sql.append(tableEntity.getDatabaseName());
        sql.append("`.`");
        sql.append(tableEntity.getTableName());
        sql.append("` (");
        // CREATE TABLE `databaseName`.`tablePhysicalName` (
        List<ColumnEntity> columns = tableEntity.getTableColumns();
        // 主键列
        String primaryKeyColumn = null;
        //
        int i = 0;
        // 获取主键
        for (ColumnEntity column : columns) {
            // 将pk为true的设为主键
            if ("true".equals(column.getIsPrimaryKey()) || "Y".equals(column.getIsPrimaryKey())) {
                primaryKeyColumn = column.getColumnName();
                break;
            }
        }
        //循环列拼接动态的sql的顺序:
        //1.mysql:  字段 类型 约束  默认值  注释
        //2.oracle: 字段 类型 约束  默认值  注释单独进行拼接一个串。
        //3.mssql:
        for (ColumnEntity column : columns) {
            sql.append(" `");
            sql.append(column.getColumnName().trim());
            sql.append("` ");
            // `physicalColumnName`
            // 根据NOT NULL 来拼接
            if ("Y".equals(column.getIsNotNull()) || "true".equals(column.getIsNotNull())) { // 如果不允许为空,则拼接NOT NULL
                //类型
                String type = column.getColumnType().toLowerCase();
                if (type.indexOf("varchar") != -1) {
                    type = ColumnTypeConstant.VARCHAR;
                } else if (type.indexOf("number") != -1) {
                    type = ColumnTypeConstant.INT;
                    //默认长度
                    if (column.getColumnLen() == null || column.getColumnLen().isEmpty()) {
                        column.setColumnLen("11");
                    }
                } else if (type.indexOf("char") != -1) {
                    type = ColumnTypeConstant.CHAR;
                }
                // 根据类型选择是否拼接长度
                if (ColumnTypeConstant.CHAR.equals(type) || ColumnTypeConstant.VARCHAR.equals(type)) { // 文本需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(") CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '");
                } else if (ColumnTypeConstant.TEXT.equals(type) || ColumnTypeConstant.LONG_TEXT.equals(type)) { // 文本不需要拼接长度
                    sql.append(type);
                    sql.append(" CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '");
                } else if (ColumnTypeConstant.DATE.equals(type)) { // 时间不需要拼接长度
                    sql.append(type);
                    sql.append(" NOT NULL COMMENT '");
                } else if (ColumnTypeConstant.DATE_TIME.equals(type) || ColumnTypeConstant.TIME_STAMP.equals(type)) { // 时间需要拼接长度 并且长度为0
                    sql.append(type);
                    sql.append("(0) NOT NULL COMMENT '");
                } else if (ColumnTypeConstant.INT.equals(type)) { // 数字需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(")  NOT NULL COMMENT '");
                }
            } else { // 如果允许为空,则拼接 NULL DEFAULT NULL
                String type = column.getColumnType().toLowerCase();
                //类型转换
                if (type.indexOf("varchar") != -1) {
                    type = ColumnTypeConstant.VARCHAR;
                } else if (type.indexOf("number") != -1) {
                    type = ColumnTypeConstant.INT;
                    //默认长度
                    if (column.getColumnLen() == null || column.getColumnLen().isEmpty()) {
                        column.setColumnLen("11");
                    }
                } else if (type.indexOf("char") != -1) {
                    type = ColumnTypeConstant.CHAR;
                }
                // 根据类型选择是否拼接长度
                if (ColumnTypeConstant.CHAR.equals(type) || ColumnTypeConstant.VARCHAR.equals(type)) { // 文本需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(") CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '");
                } else if (ColumnTypeConstant.TEXT.equals(type) || ColumnTypeConstant.LONG_TEXT.equals(type)) { // 文本不需要拼接长度
                    sql.append(type);
                    sql.append(" CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '");
                } else if (ColumnTypeConstant.DATE.equals(type)) { // 时间不需要拼接长度
                    sql.append(type);
                    sql.append(" NULL DEFAULT NULL COMMENT '");
                } else if (ColumnTypeConstant.DATE_TIME.equals(type) || ColumnTypeConstant.TIME_STAMP.equals(type)) { // 时间需要拼接长度 并且长度为0
                    sql.append(type);
                    sql.append("(0) NULL DEFAULT NULL COMMENT '");
                } else if (ColumnTypeConstant.INT.equals(type) || ColumnTypeConstant.BIGINT.equals(type) || ColumnTypeConstant.LONG.equals(type)) { // 数字需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(")  NULL DEFAULT NULL COMMENT '");
                }
            }
            i++;
            // 拼接逻辑列名/如果为最后一个字段就不拼接,
            if (columns.size() == i && primaryKeyColumn == null) {
                sql.append(column.getColumnDesc());
                sql.append("'");
            } else {
                sql.append(column.getColumnDesc());
                sql.append("',");
            }
        }
        // 拼接主键
        if (primaryKeyColumn != null) {
            sql.append(" PRIMARY KEY (`");
            sql.append(primaryKeyColumn);
            sql.append("`) USING BTREE ) ");
        } else {
            sql.append(") ");
        }
        // 拼接引擎和逻辑表名
        sql.append("ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '");
        sql.append(tableEntity.getTableComment());
        sql.append("'  ROW_FORMAT = Compact;");
        System.out.println(sql.toString());
        return sql.toString();
    }
    /**
     * @Param:将实体类转换为oracle创表的sql
     * @return:
     */
    public static String getOracleSqlByConvertEntity(TableEntity tableEntity) {
        StringBuffer sql = new StringBuffer();
        //删表默认注释掉
        sql.append("--DROP TABLE "+tableEntity.getTableName()+";");
        StringBuffer comments = new StringBuffer();
        sql.append("CREATE TABLE `");
        sql.append(tableEntity.getDatabaseName());
        sql.append("`.`");
        sql.append(tableEntity.getTableName());
        sql.append("` (");
        // CREATE TABLE `databaseName`.`tablePhysicalName` (
        List<ColumnEntity> columns = tableEntity.getTableColumns();
        //获取表名注释
        comments.append("COMMENT ON TABLE "+ tableEntity.getTableName()+" is '"+tableEntity.getTableComment() +"';");
        // 主键列
        String primaryKeyColumn = null;
        int i = 0;
        // 获取主键
        for (ColumnEntity column : columns) {
            // 将pk为true的设为主键
            if ("true".equals(column.getIsPrimaryKey()) || "Y".equals(column.getIsPrimaryKey())) {
                primaryKeyColumn = column.getColumnName();
                break;
            }
        }
        //循环列拼接动态的sql的顺序:
        //1.mysql:  字段 类型 约束  默认值  注释
        //2.oracle: 字段 类型 约束  默认值  注释单独进行拼接一个串。
        //3.mssql:
        for (ColumnEntity column : columns) {
            sql.append(" `");
            sql.append(column.getColumnName().trim());
            sql.append("` ");
            // `physicalColumnName`
            // 根据NOT NULL 来拼接
            if ("Y".equals(column.getIsNotNull()) || "true".equals(column.getIsNotNull())) { // 如果不允许为空,则拼接NOT NULL
                //类型
                String type = column.getColumnType().toLowerCase();
                if (type.indexOf("varchar") != -1) {
                    type = ColumnTypeConstant.VARCHAR;
                } else if (type.indexOf("number") != -1) {
                    type = ColumnTypeConstant.INT;
                    //默认长度
                    if (column.getColumnLen() == null || column.getColumnLen().isEmpty()) {
                        column.setColumnLen("11");
                    }
                } else if (type.indexOf("char") != -1) {
                    type = ColumnTypeConstant.CHAR;
                }
                // 根据类型选择是否拼接长度
                if (ColumnTypeConstant.CHAR.equals(type) || ColumnTypeConstant.VARCHAR.equals(type)) { // 文本需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(")");
                } else if (ColumnTypeConstant.TEXT.equals(type) || ColumnTypeConstant.LONG_TEXT.equals(type)) { // 文本不需要拼接长度
                    sql.append(type);
                    sql.append(" '");
                } else if (ColumnTypeConstant.DATE.equals(type)) { // 时间不需要拼接长度
                    sql.append(type);
                    sql.append(" NOT NULL ");
                } else if (ColumnTypeConstant.DATE_TIME.equals(type) || ColumnTypeConstant.TIME_STAMP.equals(type)) { // 时间需要拼接长度 并且长度为0
                    sql.append(type);
                    sql.append("(0) NOT NULL ");
                } else if (ColumnTypeConstant.INT.equals(type)) { // 数字需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(")  NOT NULL ");
                }
            } else { // 如果允许为空,则拼接 NULL DEFAULT NULL
                String type = column.getColumnType().toLowerCase();
                //类型转换
                if (type.indexOf("varchar") != -1) {
                    type = ColumnTypeConstant.VARCHAR;
                } else if (type.indexOf("number") != -1) {
                    type = ColumnTypeConstant.INT;
                    //默认长度
                    if (column.getColumnLen() == null || column.getColumnLen().isEmpty()) {
                        column.setColumnLen("11");
                    }
                } else if (type.indexOf("char") != -1) {
                    type = ColumnTypeConstant.CHAR;
                }
                // 根据类型选择是否拼接长度
                if (ColumnTypeConstant.CHAR.equals(type) || ColumnTypeConstant.VARCHAR.equals(type)) { // 文本需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(") ");
                } else if (ColumnTypeConstant.TEXT.equals(type) || ColumnTypeConstant.LONG_TEXT.equals(type)) { // 文本不需要拼接长度
                    sql.append(type);
                    sql.append(" ");
                } else if (ColumnTypeConstant.DATE.equals(type)) { // 时间不需要拼接长度
                    sql.append(type);
                    sql.append(" ");
                } else if (ColumnTypeConstant.DATE_TIME.equals(type) || ColumnTypeConstant.TIME_STAMP.equals(type)) { // 时间需要拼接长度 并且长度为0
                    sql.append(type);
                    sql.append("(0) ");
                } else if (ColumnTypeConstant.INT.equals(type) || ColumnTypeConstant.BIGINT.equals(type) || ColumnTypeConstant.LONG.equals(type)) { // 数字需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(") ");
                }
            }
            i++;
            // 拼接逻辑列名/如果为最后一个字段就不拼接,
            if (columns.size() == i && primaryKeyColumn == null) {
                sql.append("");
            } else {
                sql.append(",");
            }
            //每一列的注释
            comments.append( "COMMENT ON COLUMN "+tableEntity.getTableName()+"."+column.getColumnName()+" IS '" + column.getColumnDesc()+"';");
        }
        // 拼接主键
        if (primaryKeyColumn != null) {
            sql.append(" PRIMARY KEY (`");
            sql.append(primaryKeyColumn);
            sql.append("`)); ");
        } else {
            sql.append(") ;");
        }
        System.out.println("sql:"+sql.toString());
        System.out.println("comment:"+comments.toString());
        return sql.toString()+comments.toString();
    }
    /**
     * @Param:将实体类转换为mssql创表的sql
     * @return:
     */
    public static  String getMSSQLSqlByConvertEntity(TableEntity tableEntity) {



        //建表字段的sql
        StringBuffer sql = new StringBuffer();
        //判断是否存在存在进行删除
        sql.append("IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].["+tableEntity.getTableName()+"]') AND type in (N'U')");
        sql.append("DROP TABLE [dbo].["+tableEntity.getTableName()+"];");
        sql.append("[dbo].["+tableEntity.getTableName()+"]");


        //表注释
        StringBuffer comments = new StringBuffer();
        comments.append("EXEC sp_addextendedproperty 'MS_Description', '"+tableEntity.getTableComment()+"', 'SCHEMA', dbo, 'table', "+tableEntity.getTableName()+", null, null;");


        // CREATE TABLE `databaseName`.`tablePhysicalName` (
        List<ColumnEntity> columns = tableEntity.getTableColumns();
        // 主键列
        String primaryKeyColumn = null;
        //
        int i = 0;
        // 获取主键
        for (ColumnEntity column : columns) {
            // 将pk为true的设为主键
            if ("true".equals(column.getIsPrimaryKey()) || "Y".equals(column.getIsPrimaryKey())) {
                primaryKeyColumn = column.getColumnName();
                break;
            }
        }
        //循环列拼接动态的sql的顺序:
        for (ColumnEntity column : columns) {
            sql.append(" `");
            sql.append(column.getColumnName().trim());
            sql.append("` ");
            // `physicalColumnName`
            // 根据NOT NULL 来拼接
            if ("Y".equals(column.getIsNotNull()) || "true".equals(column.getIsNotNull())) { // 如果不允许为空,则拼接NOT NULL
                //类型
                String type = column.getColumnType().toLowerCase();
                if (type.indexOf("varchar") != -1) {
                    type = ColumnTypeConstant.VARCHAR;
                } else if (type.indexOf("number") != -1) {
                    type = ColumnTypeConstant.INT;
                    //默认长度
                    if (column.getColumnLen() == null || column.getColumnLen().isEmpty()) {
                        column.setColumnLen("11");
                    }
                } else if (type.indexOf("char") != -1) {
                    type = ColumnTypeConstant.CHAR;
                }
                // 根据类型选择是否拼接长度
                if (ColumnTypeConstant.CHAR.equals(type) || ColumnTypeConstant.VARCHAR.equals(type)) { // 文本需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(")");
                } else if (ColumnTypeConstant.TEXT.equals(type) || ColumnTypeConstant.LONG_TEXT.equals(type)) { // 文本不需要拼接长度
                    sql.append(type);
                    sql.append(" ");
                } else if (ColumnTypeConstant.DATE.equals(type)) { // 时间不需要拼接长度
                    sql.append(type);
                    sql.append(" NOT NULL");
                } else if (ColumnTypeConstant.DATE_TIME.equals(type) || ColumnTypeConstant.TIME_STAMP.equals(type)) { // 时间需要拼接长度 并且长度为0
                    sql.append(type);
                    sql.append("(0) NOT NUL");
                } else if (ColumnTypeConstant.INT.equals(type)) { // 数字需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(")  NOT NULL");
                }
            } else { // 如果允许为空,则拼接 NULL DEFAULT NULL
                String type = column.getColumnType().toLowerCase();
                //类型转换
                if (type.indexOf("varchar") != -1) {
                    type = ColumnTypeConstant.VARCHAR;
                } else if (type.indexOf("number") != -1) {
                    type = ColumnTypeConstant.INT;
                    //默认长度
                    if (column.getColumnLen() == null || column.getColumnLen().isEmpty()) {
                        column.setColumnLen("11");
                    }
                } else if (type.indexOf("char") != -1) {
                    type = ColumnTypeConstant.CHAR;
                }
                // 根据类型选择是否拼接长度
                if (ColumnTypeConstant.CHAR.equals(type) || ColumnTypeConstant.VARCHAR.equals(type)) { // 文本需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(") ");
                } else if (ColumnTypeConstant.TEXT.equals(type) || ColumnTypeConstant.LONG_TEXT.equals(type)) { // 文本不需要拼接长度
                    sql.append(type);
                    sql.append(" ");
                } else if (ColumnTypeConstant.DATE.equals(type)) { // 时间不需要拼接长度
                    sql.append(type);
                    sql.append(" ");
                } else if (ColumnTypeConstant.DATE_TIME.equals(type) || ColumnTypeConstant.TIME_STAMP.equals(type)) { // 时间需要拼接长度 并且长度为0
                    sql.append(type);
                    sql.append("(0)  ");
                } else if (ColumnTypeConstant.INT.equals(type) || ColumnTypeConstant.BIGINT.equals(type) || ColumnTypeConstant.LONG.equals(type)) { // 数字需要拼接长度
                    sql.append(type);
                    sql.append("(");
                    sql.append(column.getColumnLen());
                    sql.append(") ");
                }
            }
            i++;
            // 拼接逻辑列名/如果为最后一个字段就不拼接,
            if (columns.size() == i && primaryKeyColumn == null) {
            } else {
                sql.append(",");
            }
            //追加注释表的sql
            comments.append("EXEC sp_addextendedproperty 'MS_Description', '"+column.getColumnDesc()+"', 'SCHEMA', dbo, 'table', "+tableEntity.getTableName()+", 'column', "+column.getColumnName()+";");
        }
        // 拼接主键
        if (primaryKeyColumn != null) {
            sql.append(", PRIMARY KEY (`");
            sql.append(primaryKeyColumn);
            sql.append("`); ");
        } else {
            sql.append("); ");
        }
        System.out.println(sql.toString());
        System.out.println(comments.toString());
        return sql.toString()+comments.toString();
    }
}

测试

保存信息到数据库

@Test
    public void test(){

        //插入主表ID
        TableEntity tableEntity = new TableEntity();
        tableEntity.setTableName("table1");
        tableEntity.setTableComment("测试表");
        tableEntity.setDatabaseName("test");
        tableEntity.setDatabaseType("mysql");
        tableEntity.setTableSchema("");
        tableEntityMapper.insert(tableEntity);

        ColumnEntity columnEntity = new ColumnEntity();
        columnEntity.setColumnName("test");
        columnEntity.setTableId(1);
        columnEntity.setColumnDesc("测试列");
        columnEntity.setColumnType("int");
        columnEntity.setColumnLen("30");
        columnEntity.setIsPrimaryKey("Y");
        columnEntity.setIsNotNull("N");
        columnEntityMapper.insert(columnEntity);

    }

生成sql

@Test
    public void shouldAnswerWithTrue() {
        List<ColumnEntity> columns = new ArrayList<>();
        ColumnEntity column1 = new ColumnEntity();
        column1.setColumnName("id");
        column1.setColumnDesc("主键");
        column1.setColumnType("int");
        column1.setColumnLen("30");
        column1.setIsPrimaryKey("Y");
        column1.setIsNotNull("true");
        ColumnEntity column2 = new ColumnEntity();
        column2.setColumnName("name");
        column2.setColumnDesc("姓名");
        column2.setColumnType("varchar");
        column2.setColumnLen("50");
        column2.setIsPrimaryKey("N");
        column2.setIsNotNull("N");
        //添加列1
        columns.add(column1);
        //添加列2
        columns.add(column2);
        //表实体类
        TableEntity tableEntity = new TableEntity();
        tableEntity.setTableName("testtable");
        tableEntity.setTableComment("测试表");
        tableEntity.setTableColumns(columns);
        tableEntity.setDatabaseName("testdb");

        //输出mysqlSql
        //String mysqlSql = CreateTableHelper.getMysqlSqlByConvertEntity(tableEntity);

        //输出oracelSql
        String oracelSql = CreateTableHelper.getOracleSqlByConvertEntity(tableEntity);
        System.out.println(oracelSql);

    }

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘同学要加油呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值