add mapping support

This commit is contained in:
温少
2012-03-14 00:22:38 +08:00
parent e8f2a07688
commit 0a7c050dcf
2 changed files with 122 additions and 46 deletions
@@ -1,8 +1,11 @@
package com.alibaba.druid.mapping;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.mapping.spi.ExportParameterVisitor;
import com.alibaba.druid.mapping.spi.MappingProvider;
@@ -14,6 +17,7 @@ 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.visitor.SQLASTOutputVisitor;
import com.alibaba.druid.util.JdbcUtils;
public class MappingEngine {
@@ -81,14 +85,6 @@ public class MappingEngine {
return toSQL(query);
}
public String toSQL(SQLObject sqlObject) {
StringBuilder out = new StringBuilder();
SQLASTOutputVisitor outputVisitor = createOutputVisitor(out);
sqlObject.accept(outputVisitor);
return out.toString();
}
public SQLUpdateStatement explainToUpdateSQLObject(String sql) {
return provider.explainToUpdateSQLObject(this, sql);
}
@@ -123,4 +119,50 @@ public class MappingEngine {
ExportParameterVisitor exporter = this.provider.createExportParameterVisitor(parameters);
sqlObject.accept(exporter);
}
public String toSQL(SQLObject sqlObject) {
return toSQL(sqlObject, false);
}
public String toSQL(SQLObject sqlObject, boolean exportParameter) {
if (exportParameter) {
exportParameters(sqlObject);
}
StringBuilder out = new StringBuilder();
SQLASTOutputVisitor outputVisitor = createOutputVisitor(out);
sqlObject.accept(outputVisitor);
return out.toString();
}
public List<Map<String, Object>> select(Connection conn, String sql, List<Object> parameters) throws SQLException {
SQLSelectQueryBlock sqlObject = this.explainToSelectSQLObject(sql);
exportParameters(sqlObject, parameters);
String rawSql = this.toSQL(sqlObject);
return JdbcUtils.executeQuery(conn, rawSql, parameters);
}
public int delete(Connection conn, String sql, List<Object> parameters) throws SQLException {
SQLDeleteStatement sqlObject = this.explainToDeleteSQLObject(sql);
exportParameters(sqlObject, parameters);
String rawSql = this.toSQL(sqlObject);
int updateCount = JdbcUtils.executeUpdate(conn, rawSql, parameters);
return updateCount;
}
public int update(Connection conn, String sql, List<Object> parameters) throws SQLException {
SQLUpdateStatement sqlObject = this.explainToUpdateSQLObject(sql);
exportParameters(sqlObject, parameters);
String rawSql = this.toSQL(sqlObject);
int updateCount = JdbcUtils.executeUpdate(conn, rawSql, parameters);
return updateCount;
}
public void insert(Connection conn, String sql, List<Object> parameters) throws SQLException {
SQLInsertStatement sqlObject = this.explainToInsertSQLObject(sql);
exportParameters(sqlObject, parameters);
String rawSql = this.toSQL(sqlObject);
JdbcUtils.execute(conn, rawSql, parameters);
}
}