enhance mapping for ORM

This commit is contained in:
温少
2012-05-06 20:52:45 +08:00
parent 66cb1a2e83
commit d8ecb756a7
14 changed files with 520 additions and 60 deletions
@@ -3,6 +3,7 @@ package com.alibaba.druid.mapping;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -75,6 +76,10 @@ public class MappingEngine {
public MappingVisitor createMappingVisitor() {
return provider.createMappingVisitor(this);
}
public MappingVisitor createMappingVisitor(List<Object> parameters) {
return provider.createMappingVisitor(this, parameters);
}
public SQLASTOutputVisitor createOutputVisitor(Appendable out) {
return provider.createOutputVisitor(this, out);
@@ -83,11 +88,16 @@ public class MappingEngine {
public SQLSelectQueryBlock explainToSelectSQLObject(String sql) {
return provider.explainToSelectSQLObject(this, sql);
}
public String explainToSelectSQL(String sql) {
return explainToSelectSQL(sql, Collections.emptyList());
}
public String explainToSelectSQL(String sql, List<Object> parameters) {
SQLSelectQueryBlock query = explainToSelectSQLObject(sql);
query.accept(this.createMappingVisitor());
MappingVisitor visitor = this.createMappingVisitor(parameters);
query.accept(visitor);
return toSQL(query);
}
@@ -97,11 +107,20 @@ public class MappingEngine {
}
public String explainToDeleteSQL(String sql) {
SQLDeleteStatement query = explainToDeleteSQLObject(sql);
SQLDeleteStatement stmt = explainToDeleteSQLObject(sql);
query.accept(this.createMappingVisitor());
MappingVisitor visitor = this.createMappingVisitor(Collections.emptyList());
stmt.accept(visitor);
return toSQL(query);
return toSQL(stmt);
}
public String resolveTableName(Entity entity, List<Object> parameters) {
return entity.getTableName();
}
public String resovleColumnName(Entity entity, Property property, List<Object> parameters) {
return property.getDbColumnName();
}
public SQLUpdateStatement explainToUpdateSQLObject(String sql) {
@@ -109,11 +128,12 @@ public class MappingEngine {
}
public String explainToUpdateSQL(String sql) {
SQLUpdateStatement query = explainToUpdateSQLObject(sql);
SQLUpdateStatement stmt = explainToUpdateSQLObject(sql);
query.accept(this.createMappingVisitor());
MappingVisitor visitor = this.createMappingVisitor(Collections.emptyList());
stmt.accept(visitor);
return toSQL(query);
return toSQL(stmt);
}
public SQLInsertStatement explainToInsertSQLObject(String sql) {
@@ -121,11 +141,12 @@ public class MappingEngine {
}
public String explainToInsertSQL(String sql) {
SQLInsertStatement query = explainToInsertSQLObject(sql);
SQLInsertStatement stmt = explainToInsertSQLObject(sql);
query.accept(this.createMappingVisitor());
MappingVisitor visitor = this.createMappingVisitor(Collections.emptyList());
stmt.accept(visitor);
return toSQL(query);
return toSQL(stmt);
}
public List<Object> exportParameters(SQLObject sqlObject) {