JSQLParser源码分析之CreateTable

源码地址 https://github.com/JSQLParser/JSqlParser


源码分析


ColDataType 列数据类型


有2个属性:

  • String dataType 标识数据类型
  • List argumentsStringList 类型参数

例如

  `user_num` VARCHAR(50) NOT NULL COMMENT '用户编号'

中的 VARCHAR(50) NOT NULL VARCHAR是数据类型 (50) 是argumentList参数,通过sql语句基础知识可知,类似(50)可以没有。

 public String toString() {
        return dataType + (argumentsStringList!=null?" "+PlainSelect.getStringList(argumentsStringList, true, true):"");
    }

toString()方法,PlainSelect.getStringList(true,true)两个true,true标识加括号,加逗号 如 VARCHAR(50,20)这样。


ColumnDefinition 列定义


三个属性

  • private String columnName     列名字
  • private ColDataType colDataType   列数据类型
  • private List columnSpecStrings    列参数

     `user_num` VARCHAR(50) NOT NULL COMMENT '用户编号'
    
    public String toString() {
            return columnName+" "+colDataType+" "+PlainSelect.getStringList(columnSpecStrings, false, false);
        }
    

toString() 方法中令2个都为false,体现出来就是NOT NULL ....

Index 索引

  • private String type; 类型
  • private List columnsNames; 列名字列表 可联合索引
  • private String name; 索引名字

The type of this index: “PRIMARY KEY”, “UNIQUE”, “INDEX”

如: `"PRIMARY KEY (mycol2, mycol)) type = myisam";`

CreateTable

private Table table;
/*表参数列表*/
private List tableOptionsStrings;
/*列定义列表*/
private List columnDefinitions;
/*索引列表*/
private List indexes;

建表需要4个部分,分别是表,表参数列表,列定义列表,索引列表

 -- 日志表
 CREATE TABLE sys_log (
 `id` BIGINT NOT NULL PRIMARY KEY AUTO_INCRE MENT COMMENT '主键',
 `oper_name` VARCHAR(50) NOT NULL COMMENT '操作人编号',
 `oper_type` TINYINT UNSIGNED NOT NULL COMMENT '操作类型',
 `oper_note` VARCHAR(100) COMMENT '操作描述',
 `method` VARCHAR(150) DEFAULT NULL COMMENT '操作方法',
 `address` VARCHAR(50) DEFAU
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSqlParser是一个用于解析分析SQL语句的Java库,其源码可以在GitHub上找到,具体地址是https://github.com/JSQLParser/JSqlParser。 如果您想使用JSqlParser,您可以在您的项目中添加以下Maven依赖: ``` <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>4.4</version> </dependency> ``` 在JSqlParser中,有一个ColDataType类,用于表示列的数据类型。该类具有toString()方法,可以将ColDataType对象转换为字符串表示。以下是该方法的代码实现: ```java public String toString() { StringBuffer sb = new StringBuffer(); sb.append("CREATE TABLE ").append(table).append(" ("); sb.append(PlainSelect.getStringList(columnDefinitions, true, false)); if (indexes != null && indexes.size() != 0) { sb.append(", "); sb.append(PlainSelect.getStringList(indexes, true, false)); } sb.append(") "); sb.append(PlainSelect.getStringList(tableOptionsStrings, false, false)); return sb.toString(); } ``` 这个方法的作用是将表的定义信息转换为字符串表示,包括表名、列定义列表和索引列表等。您可以使用toString()方法来获取一个ColDataType对象的字符串表示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JSQLParser源码分析CreateTable](https://blog.csdn.net/Newpidian/article/details/53138768)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [JSqlParser-SQL解析处理](https://blog.csdn.net/weixin_43549578/article/details/125657588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值