druid sql.html,Druid中sql解析

基于druid解析查询sql,在JDBC API基础上进行插件开发的时候需要。

import com.alibaba.druid.sql.SQLUtils;

import com.alibaba.druid.sql.ast.statement.SQLSelect;

import com.alibaba.druid.sql.ast.statement.SQLSelectItem;

import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;

import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;

import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;

import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor;

import com.alibaba.druid.util.JdbcUtils;

public class SQLParseTest {

public static void main(String args[]){

String sql = " select eventId,eventKey,eventName,flag from event where eventId = ? and eventKey = ? and eventName = ?";

//使用mysql解析

MySqlStatementParser sqlStatementParser = new MySqlStatementParser(sql) ;

//解析select查询

SQLSelectStatement sqlStatement = sqlStatementParser.parseSelect() ;

SQLSelect sqlSelect = sqlStatement.getSelect() ;

//获取sql查询块

SQLSelectQueryBlock sqlSelectQuery = (SQLSelectQueryBlock)sqlSelect.getQuery() ;

StringBuffer out = new StringBuffer() ;

//创建sql解析的标准化输出

SQLASTOutputVisitor sqlastOutputVisitor = SQLUtils.createFormatOutputVisitor(out , null , JdbcUtils.MYSQL) ;

//解析select项

out.delete(0, out.length()) ;

for (SQLSelectItem sqlSelectItem : sqlSelectQuery.getSelectList()) {

if(out.length()>1){

out.append(",") ;

}

sqlSelectItem.accept(sqlastOutputVisitor);

}

System.out.println("SELECT "+out) ;

//解析from

out.delete(0, out.length()) ;

sqlSelectQuery.getFrom().accept(sqlastOutputVisitor) ;

System.out.println("FROM "+out) ;

//解析where

out.delete(0, out.length()) ;

sqlSelectQuery.getWhere().accept(sqlastOutputVisitor) ;

System.out.println("WHERE "+out);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值