From e54a1aa0b8e6b1cfc83773b693eaa862dd9d4bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Tue, 3 Oct 2017 15:05:42 -0500 Subject: [PATCH] Updated Druid_SQL_AST (markdown) --- Druid_SQL_AST.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Druid_SQL_AST.md b/Druid_SQL_AST.md index dc25c8d..0485e2b 100644 --- a/Druid_SQL_AST.md +++ b/Druid_SQL_AST.md @@ -179,5 +179,19 @@ String dbType = JdbcConstants.MYSQL; SQLExpr expr = SQLUtils.toSQLExpr("id=3", dbType); ``` -## 4. 如何遍历AST节点 +# 4. 怎样打印AST节点 +## 4.1通过SQLUtils工具类打印节点 +```java +package com.alibaba.druid.sql; + +public class SQLUtils { + // 可以将SQLExpr/SQLStatement打印为String类型 + static String toSQLString(SQLObject sqlObj, String dbType); + + // 可以将一个<SQLStatement>打印为String类型 + static String toSQLString(List statementList, String dbType); +} +``` + +# 5. 如何自定义遍历AST节点 所有的AST节点都支持Visitor模式,需要自定义遍历逻辑,可以实现相应的ASTVisitorAdapter派生类,比如 https://github.com/alibaba/druid/wiki/SQL_Parser_Demo_visitor \ No newline at end of file