add mapping support

This commit is contained in:
温少
2012-03-13 17:43:14 +08:00
8 changed files with 125 additions and 9 deletions
@@ -3,10 +3,14 @@ package com.alibaba.druid.mapping.spi;
import com.alibaba.druid.mapping.MappingEngine;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor;
@@ -21,7 +25,7 @@ public class MySqlMappingProvider implements MappingProvider {
public SQLASTOutputVisitor createOutputVisitor(MappingEngine engine, Appendable out) {
return new MySqlOutputVisitor(out);
}
public SQLSelectQueryBlock explainToSelectSQLObject(MappingEngine engine, String sql) {
MySqlSelectParser selectParser = new MySqlSelectParser(sql);
MySqlSelectQueryBlock query = (MySqlSelectQueryBlock) selectParser.query();
@@ -44,4 +48,19 @@ public class MySqlMappingProvider implements MappingProvider {
return query;
}
public MySqlDeleteStatement explainToDeleteSQLObject(MappingEngine engine, String sql) {
MySqlStatementParser parser = new MySqlStatementParser(sql);
return parser.parseDeleteStatement();
}
public SQLUpdateStatement explainToUpdateSQLObject(MappingEngine engine, String sql) {
MySqlStatementParser parser = new MySqlStatementParser(sql);
return parser.parseUpdateStatement();
}
public SQLInsertStatement explainToInsertSQLObject(MappingEngine engine, String sql) {
MySqlStatementParser parser = new MySqlStatementParser(sql);
return (SQLInsertStatement) parser.parseInsert();
}
}