基於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){
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);
druid字段級 Druid的資料結構
druid的資料結構 druid資料儲存結構可以分為三層 1.datasource 2.chunk 3.segment datasource相當於傳統資料庫的按時間分割槽的表,chunk相當於mysql中的按時間分割槽的表乙個分割槽,但是chunk不是乙個實體,只是乙個虛擬的概念,乙個chunk中可...
解Bug之路 Druid的Bug
筆者很熱衷於解決bug,同時比較擅長 網路 協議 部分,所以經常被喚去解決一些網路io方面的bug。現在就挑乙個案例出來,寫出分析思路,以饗讀者,希望讀者在以後的工作中能夠少踩點坑。此bug是druid低版本的bug,此bug至少在1.0.12版本就已經修復。在緊張的新專案開發的日子裡,突然收到線上...
grails配置druid監控sql
buildconfig.groovy新增jar包,自行選擇版本 compile com.alibaba druid 1.1.21 resource.groovy新增datasource,注入druid的datasource beans 在此配置資料來源,由於我的資料庫連線引數是寫在datasourc...