Updated Druid_SQL_AST (markdown)

高铁
2017-10-03 14:19:21 -05:00
parent 7552ba3419
commit 596367a49f
+33 -14
@@ -9,21 +9,13 @@ package com.alibaba.druid.sql.ast;
interface SQLObject {}
interface SQLExpr extends SQLObject {}
interface SQLStatement extends SQLObject {}
interface SQLTableSource extends SQLObject {}
class SQLSelect extends SQLObject {}
class SQLSelectQueryBlock extends SQLObject {}
```
## 2.1 常用的SQLStatemment
最常用的Statement当然是SELECT/UPDATE/DELETE/INSERT,他们分别是
```java
package com.alibaba.druid.sql.ast.statement;
class SQLSelectStatement implements SQLStatement {}
class SQLUpdateStatement implements SQLStatement {}
class SQLDeleteStatement implements SQLStatement {}
class SQLInsertStatement implements SQLStatement {}
```
## 2.2 常用的SQLExpr有哪些
## 2.1 常用的SQLExpr有哪些
```java
package com.alibaba.druid.sql.ast.expr;
@@ -33,7 +25,9 @@ class SQLIdentifierExpr implements SQLExpr {}
// A.ID = 3 这里的A.ID是一个SQLPropertyExpr
class SQLPropertyExpr implements SQLExpr {}
// 比如 ID = 3 这是一个SQLBinaryOpExpr,left是ID (SQLIdentifierExpr),right是3 (SQLIntegerExpr)
// 比如 ID = 3 这是一个SQLBinaryOpExpr
// left是ID (SQLIdentifierExpr)
// right是3 (SQLIntegerExpr)
class SQLBinaryOpExpr implements SQLExpr {
SQLExpr left;
SQLExpr right;
@@ -41,6 +35,31 @@ class SQLBinaryOpExpr implements SQLExpr {
}
```
## 2.2 常用的SQLStatemment
最常用的Statement当然是SELECT/UPDATE/DELETE/INSERT,他们分别是
```java
package com.alibaba.druid.sql.ast.statement;
class SQLSelectStatement implements SQLStatement {
SQLSelect select;
}
class SQLUpdateStatement implements SQLStatement {
SQLExprTableSource tableSource;
List<SQLUpdateSetItem> items;
SQLExpr where;
}
class SQLDeleteStatement implements SQLStatement {
SQLTableSource tableSource;
SQLExpr where;
}
class SQLInsertStatement implements SQLStatement {
SQLExprTableSource tableSource;
List<SQLExpr> columns;
SQLSelect query;
}
```
# 3. 怎样产生AST
## 3.1 通过SQLUtils产生List&lt;SQLStatement&gt;