mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
Page:
SQL_Parser_Demo_visitor
Pages
Benchmark_aliyun
Contributors
DBCP迁移
Druid Change Log
DruidDataSource
DruidDataSource动态配置
DruidDataSource统计数据日志输出格式
DruidDataSource配置
DruidDataSource配置属性列表
Druid_SQL_AST
Druid中使用log4j2进行日志输出
Druid连接池介绍
Druid锁的公平模式问题
EvalVisitor
ExceptionSorter_cn
ExportParameterVisitor_demo_cn
FAQ
Home
JDBC_Properties
KeepAlive_cn
MySQL SQL Parser
OnFatalErrorMaxActive
Oracle Driver Internal API
Oracle数据库下PreparedStatementCache内存问题解决方案
ParameterizedOutputVisitor
SQL Parser
SQL_Format
SQL_Parser_Demo_visitor
SQL_Parser_Parameterize
SQL_RemoveCondition_demo
SQL_Schema_Repository
SQL格式化
SchemaStatVisitor
SchemaStatVisitor_RelationShip
StatFilter_Items
TableMapping_cn
Use_PageUtils
WallFilter 拦截规则
druid monitor设计
getCreateTableScript
large_amount_datasource_cn
linux benchmark
xxxxx
使用ConfigFilter
使用EncodingConvertFilter
使用Spring4的JavaConfig整合Druid Hibernate4.3
关于BoneCP
内置Filter的别名
分库分表
各种数据库连接池对比
各种连接池性能对比测试
如何修改SQL添加条件
如何参与
如何在Spring Boot中配置数据库密码加密?
如何捐赠
定时输出统计信息到日志中
常见问题
怎么保存Druid的监控记录
数据库多数据源
新手指南
注解方式配置监控
简介_WallFilter
设计_动态修改maxActive支持
贡献者者代码编写及提交规范
连接泄漏监测
配置 wallfilter
配置_DruidDataSource参考配置
配置_Druid和Spring关联监控配置
配置_Filter配置
配置_JNDI_Jetty
配置_JNDI_Tomcat
配置_LogFilter
配置_StatFilter
配置_StatViewFilter
配置_StatViewServlet配置
配置_配置WebStatFilter
配置druid内置的log实现
首页
Clone
5
SQL_Parser_Demo_visitor
高铁 edited this page 2017-09-29 07:18:09 -05:00
Table of Contents
1. 实现自己的Visitor
1.1 Oracle版本
public static class ExportTableAliasVisitor extends OracleASTVisitorAdapter {
private Map<String, SQLTableSource> aliasMap = new HashMap<String, SQLTableSource>();
public boolean visit(OracleSelectTableReference x) {
String alias = x.getAlias();
aliasMap.put(alias, x);
return true;
}
public Map<String, SQLTableSource> getAliasMap() {
return aliasMap;
}
}
1.2 MySql版本
public static class ExportTableAliasVisitor extends MySqlASTVisitorAdapter {
private Map<String, SQLTableSource> aliasMap = new HashMap<String, SQLTableSource>();
public boolean visit(SQLExprTableSource x) {
String alias = x.getAlias();
aliasMap.put(alias, x);
return true;
}
public Map<String, SQLTableSource> getAliasMap() {
return aliasMap;
}
}
1.3 POSTGRESQL版本
public static class ExportTableAliasVisitor extends PGASTVisitorAdapter {
private Map<String, SQLTableSource> aliasMap = new HashMap<String, SQLTableSource>();
public boolean visit(SQLExprTableSource x) {
String alias = x.getAlias();
aliasMap.put(alias, x);
return true;
}
public Map<String, SQLTableSource> getAliasMap() {
return aliasMap;
}
}
2. 使用Visitor
finnal String dbType = JdbcConstants.ORACLE; // JdbcConstants.MYSQL或者JdbcConstants.POSTGRESQL
String sql = "select * from mytable a where a.id = 3";
List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, dbType);
ExportTableAliasVisitor visitor = new ExportTableAliasVisitor();
for (SQLStatement stmt : stmtList) {
stmt.accept(visitor);
}
SQLTableSource tableSource = visitor.getAliasMap().get("a");
System.out.println(tableSource);