源码地址 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