mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add mapping support
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user