• 使用jsqlparser创建MySQL建表语句


    语法

    create table [IF NOT EXISTS] 表名 (
    字段名 类型 [约束条件],
    字段名 类型 [约束条件],
    字段名 类型 [约束条件],
    字段名 类型 [约束条件]
    );

    • 字段定义在括号内
    • 约束条件可以有多个
    • 多个字段定义之间用都会隔开

    常见约束

    • NOT NULL 非空
    • DEFAULT 0 默认值
    • AUTO_INCREMENT 自增长
    • PRIMARY KEY 主键

    示例

    create table if not exists t_one (
      id bigint(20) UNSIGNED NOT NULL auto_increment primary key COMMENT '主键',
      name varchar(64) COMMENT '名称',
      age int(10) COMMENT '仙人寿命'
    ) engine=innoDB default charset=utf8mb4;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Jsqlparser创建建表语句

    引入依赖

         <dependency>
             <groupId>com.github.jsqlparsergroupId>
             <artifactId>jsqlparserartifactId>
             <version>4.3version>
         dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Demo

    import net.sf.jsqlparser.schema.Table;
    import net.sf.jsqlparser.statement.create.table.ColDataType;
    import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
    import net.sf.jsqlparser.statement.create.table.CreateTable;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class CreateTableDemo {
        public static void main(String[] args)throws Exception {
            CreateTable createTable = new CreateTable();
            // 设置表名
            Table table = new Table("t_one");
            createTable.setTable(table);
            // 定义字段
            // id
            ColDataType bigint = new ColDataType("BIGINT");
            bigint.setArgumentsStringList(Collections.singletonList("20"));
            ColumnDefinition id = new ColumnDefinition("id", bigint);
            id.setColumnSpecs(Arrays.asList("UNSIGNED", "NOT NULL", "PRIMARY KEY", "AUTO_INCREMENT", "COMMENT '主键'"));
            // name
            ColDataType varchar = new ColDataType("VARCHAR");
            varchar.setArgumentsStringList(Collections.singletonList("64"));
            ColumnDefinition name = new ColumnDefinition("name", varchar);
            name.setColumnSpecs(Collections.singletonList("COMMENT '名字'"));
            // age
            ColDataType anInt = new ColDataType("INT");
            ColumnDefinition age = new ColumnDefinition("age", anInt);
            age.setColumnSpecs(Collections.singletonList("COMMENT '仙人年龄'"));
            // 设置字段
            List<ColumnDefinition> columnDefinitionList = new ArrayList<>();
            columnDefinitionList.add(id);
            columnDefinitionList.add(name);
            columnDefinitionList.add(age);
            createTable.setColumnDefinitions(columnDefinitionList);
            // 设置IF NOT EXISTS
            createTable.setIfNotExists(true);
            // 设置引擎、字符集、排序规则
            createTable.setTableOptionsStrings(Arrays.asList("ENGINE = InnoDB", "CHARACTER SET = utf8mb4", "COLLATE = utf8mb4_general_ci"));
            // 打印建表语句
            System.out.println(createTable);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    结果:

    CREATE TABLE IF NOT EXISTS t_one (id BIGINT (20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', name VARCHAR (64) COMMENT '名字', age INT COMMENT '仙人年龄') ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci
    
    • 1
  • 相关阅读:
    623. 在二叉树中增加一行(难度:中等)
    【Django笔记】 登录功能
    聊一聊对一个 C# 商业程序的反反调试
    LeetCode 39. Combination Sum【回溯,剪枝】中等
    web前端实训作业 html+css+javascript 水果超市网页设计实例 企业网站制作
    PageHelp插件在复杂sql下引起的Having无法识别错误及其解决方案
    23.C++之STL(一)
    深度学习应用篇-元学习[13]:元学习概念、学习期、工作原理、模型分类等
    网络安全深入学习第一课——热门框架漏洞(RCE-代码执行)
    WampServer下载安装并结合cpolar内网穿透实现本地服务的公网访问
  • 原文地址:https://blog.csdn.net/q4444tita/article/details/133842412