mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for mapping && remove warnings
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.alibaba.druid.mapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MappingContext {
|
||||
|
||||
private List<Object> parameters;
|
||||
|
||||
private boolean generateAlias = false;
|
||||
|
||||
public MappingContext(){
|
||||
this(new ArrayList<Object>());
|
||||
}
|
||||
|
||||
public MappingContext(List<Object> parameters){
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public List<Object> getParameters() {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public void setParameters(List<Object> parameters) {
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
public boolean isGenerateAlias() {
|
||||
return generateAlias;
|
||||
}
|
||||
|
||||
public void setGenerateAlias(boolean generateAlias) {
|
||||
this.generateAlias = generateAlias;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -78,7 +78,11 @@ public class MappingEngine {
|
||||
}
|
||||
|
||||
public MappingVisitor createMappingVisitor(List<Object> parameters) {
|
||||
return provider.createMappingVisitor(this, parameters);
|
||||
return createMappingVisitor(new MappingContext(parameters));
|
||||
}
|
||||
|
||||
public MappingVisitor createMappingVisitor(MappingContext context) {
|
||||
return provider.createMappingVisitor(this, context);
|
||||
}
|
||||
|
||||
public SQLASTOutputVisitor createOutputVisitor(Appendable out) {
|
||||
@@ -94,9 +98,12 @@ public class MappingEngine {
|
||||
}
|
||||
|
||||
public String explainToSelectSQL(String sql, List<Object> parameters) {
|
||||
return explainToSelectSQL(sql, new MappingContext(parameters));
|
||||
}
|
||||
public String explainToSelectSQL(String sql, MappingContext context) {
|
||||
SQLSelectQueryBlock query = explainToSelectSQLObject(sql);
|
||||
|
||||
MappingVisitor visitor = this.createMappingVisitor(parameters);
|
||||
MappingVisitor visitor = this.createMappingVisitor(context);
|
||||
query.accept(visitor);
|
||||
visitor.afterResolve();
|
||||
afterResole(visitor);
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
|
||||
@@ -27,8 +28,8 @@ public class MSSQLServerMappingProvider implements MappingProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters) {
|
||||
return new MSSQLServerMappingVisitor(engine, parameters);
|
||||
public MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context) {
|
||||
return new MSSQLServerMappingVisitor(engine, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.mapping.Entity;
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.mapping.Property;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
@@ -28,18 +28,18 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
|
||||
private final MappingEngine engine;
|
||||
private final Map<String, SQLTableSource> tableSources = new LinkedHashMap<String, SQLTableSource>();
|
||||
|
||||
private final List<Object> parameters;
|
||||
private final MappingContext context;
|
||||
private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
|
||||
private int variantIndex = 0;
|
||||
private final List<SQLExpr> unresolveList = new ArrayList<SQLExpr>();
|
||||
|
||||
public MSSQLServerMappingVisitor(MappingEngine engine){
|
||||
this(engine, Collections.emptyList());
|
||||
this(engine, new MappingContext());
|
||||
}
|
||||
|
||||
public MSSQLServerMappingVisitor(MappingEngine engine, List<Object> parameters){
|
||||
public MSSQLServerMappingVisitor(MappingEngine engine, MappingContext context){
|
||||
this.engine = engine;
|
||||
this.parameters = parameters;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public MappingEngine getEngine() {
|
||||
@@ -47,7 +47,11 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
|
||||
}
|
||||
|
||||
public List<Object> getParameters() {
|
||||
return parameters;
|
||||
return context.getParameters();
|
||||
}
|
||||
|
||||
public MappingContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public List<PropertyValue> getPropertyValues() {
|
||||
@@ -64,12 +68,12 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
|
||||
|
||||
@Override
|
||||
public String resolveTableName(Entity entity) {
|
||||
return engine.resolveTableName(entity, parameters);
|
||||
return engine.resolveTableName(entity, context.getParameters());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String resovleColumnName(Entity entity, Property property) {
|
||||
return engine.resovleColumnName(entity, property, parameters);
|
||||
return engine.resovleColumnName(entity, property, context.getParameters());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,7 +119,7 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem
|
||||
public boolean visit(SQLVariantRefExpr x) {
|
||||
return MappingVisitorUtils.visit(this, x);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLSubqueryTableSource x) {
|
||||
return MappingVisitorUtils.visit(this, x);
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
@@ -14,7 +15,7 @@ public interface MappingProvider {
|
||||
|
||||
MappingVisitor createMappingVisitor(MappingEngine engine);
|
||||
|
||||
MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters);
|
||||
MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context);
|
||||
|
||||
ExportParameterVisitor createExportParameterVisitor(List<Object> parameters);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.mapping.Entity;
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.mapping.Property;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
@@ -14,6 +15,8 @@ public interface MappingVisitor extends SQLASTVisitor {
|
||||
MappingEngine getEngine();
|
||||
|
||||
List<Object> getParameters();
|
||||
|
||||
MappingContext getContext();
|
||||
|
||||
Entity getFirstEntity();
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ public class MappingVisitorUtils {
|
||||
|
||||
if (x.getParent() instanceof SQLSelectItem) {
|
||||
SQLSelectItem selectItem = (SQLSelectItem) x.getParent();
|
||||
if (selectItem.getAlias() == null) {
|
||||
if (visitor.getContext().isGenerateAlias() && selectItem.getAlias() == null) {
|
||||
selectItem.setAlias('"' + property.getName() + '"');
|
||||
}
|
||||
}
|
||||
@@ -129,9 +129,9 @@ public class MappingVisitorUtils {
|
||||
x.putAttribute("mapping.property", property);
|
||||
x.putAttribute("mapping.entity", propertyEntity);
|
||||
|
||||
if (x.getParent() instanceof SQLSelectItem) {
|
||||
if (visitor.getContext().isGenerateAlias() && x.getParent() instanceof SQLSelectItem) {
|
||||
SQLSelectItem selectItem = (SQLSelectItem) x.getParent();
|
||||
if (selectItem.getAlias() == null) {
|
||||
if (visitor.getContext().isGenerateAlias() && selectItem.getAlias() == null) {
|
||||
selectItem.setAlias('"' + property.getName() + '"');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
|
||||
@@ -26,8 +27,8 @@ public class MySqlMappingProvider implements MappingProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters) {
|
||||
return new MySqlMappingVisitor(engine, parameters);
|
||||
public MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context) {
|
||||
return new MySqlMappingVisitor(engine, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.mapping.Entity;
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.mapping.Property;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
@@ -28,18 +28,18 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
|
||||
private final MappingEngine engine;
|
||||
private final Map<String, SQLTableSource> tableSources = new LinkedHashMap<String, SQLTableSource>();
|
||||
|
||||
private final List<Object> parameters;
|
||||
private final MappingContext context;
|
||||
private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
|
||||
private int variantIndex = 0;
|
||||
private final List<SQLExpr> unresolveList = new ArrayList<SQLExpr>();
|
||||
|
||||
public MySqlMappingVisitor(MappingEngine engine){
|
||||
this(engine, Collections.emptyList());
|
||||
this(engine, new MappingContext());
|
||||
}
|
||||
|
||||
public MySqlMappingVisitor(MappingEngine engine, List<Object> parameters){
|
||||
public MySqlMappingVisitor(MappingEngine engine, MappingContext context){
|
||||
this.engine = engine;
|
||||
this.parameters = parameters;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public MappingEngine getEngine() {
|
||||
@@ -47,7 +47,11 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
|
||||
}
|
||||
|
||||
public List<Object> getParameters() {
|
||||
return parameters;
|
||||
return context.getParameters();
|
||||
}
|
||||
|
||||
public MappingContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public List<PropertyValue> getPropertyValues() {
|
||||
@@ -64,12 +68,12 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
|
||||
|
||||
@Override
|
||||
public String resolveTableName(Entity entity) {
|
||||
return engine.resolveTableName(entity, parameters);
|
||||
return engine.resolveTableName(entity, context.getParameters());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String resovleColumnName(Entity entity, Property property) {
|
||||
return engine.resovleColumnName(entity, property, parameters);
|
||||
return engine.resovleColumnName(entity, property, context.getParameters());
|
||||
}
|
||||
|
||||
public Entity getFirstEntity() {
|
||||
@@ -109,7 +113,7 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
|
||||
public boolean visit(SQLBinaryOpExpr x) {
|
||||
return MappingVisitorUtils.visit(this, x);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLVariantRefExpr x) {
|
||||
return MappingVisitorUtils.visit(this, x);
|
||||
@@ -129,16 +133,16 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi
|
||||
public boolean visit(SQLExprTableSource x) {
|
||||
return MappingVisitorUtils.visit(this, x);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getAndIncrementVariantIndex() {
|
||||
return variantIndex++;
|
||||
}
|
||||
|
||||
|
||||
public int getVariantIndex() {
|
||||
return variantIndex;
|
||||
}
|
||||
|
||||
|
||||
public List<SQLExpr> getUnresolveList() {
|
||||
return unresolveList;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
|
||||
@@ -23,8 +24,8 @@ public class OracleMappingProvider implements MappingProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MappingVisitor createMappingVisitor(MappingEngine engine, List<Object> parameters) {
|
||||
return new OracleMappingVisitor(engine, parameters);
|
||||
public MappingVisitor createMappingVisitor(MappingEngine engine, MappingContext context) {
|
||||
return new OracleMappingVisitor(engine, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.alibaba.druid.mapping.spi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.mapping.Entity;
|
||||
import com.alibaba.druid.mapping.MappingContext;
|
||||
import com.alibaba.druid.mapping.MappingEngine;
|
||||
import com.alibaba.druid.mapping.Property;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
@@ -30,18 +30,18 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map
|
||||
private final MappingEngine engine;
|
||||
private final Map<String, SQLTableSource> tableSources = new LinkedHashMap<String, SQLTableSource>();
|
||||
|
||||
private final List<Object> parameters;
|
||||
private final MappingContext context;
|
||||
private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
|
||||
private int variantIndex = 0;
|
||||
private final List<SQLExpr> unresolveList = new ArrayList<SQLExpr>();
|
||||
|
||||
public OracleMappingVisitor(MappingEngine engine){
|
||||
this(engine, Collections.emptyList());
|
||||
this(engine, new MappingContext());
|
||||
}
|
||||
|
||||
public OracleMappingVisitor(MappingEngine engine, List<Object> parameters){
|
||||
public OracleMappingVisitor(MappingEngine engine, MappingContext context){
|
||||
this.engine = engine;
|
||||
this.parameters = parameters;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public MappingEngine getEngine() {
|
||||
@@ -49,7 +49,11 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map
|
||||
}
|
||||
|
||||
public List<Object> getParameters() {
|
||||
return parameters;
|
||||
return context.getParameters();
|
||||
}
|
||||
|
||||
public MappingContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public List<PropertyValue> getPropertyValues() {
|
||||
@@ -66,12 +70,12 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map
|
||||
|
||||
@Override
|
||||
public String resolveTableName(Entity entity) {
|
||||
return engine.resolveTableName(entity, parameters);
|
||||
return engine.resolveTableName(entity, context.getParameters());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String resovleColumnName(Entity entity, Property property) {
|
||||
return engine.resovleColumnName(entity, property, parameters);
|
||||
return engine.resovleColumnName(entity, property, context.getParameters());
|
||||
}
|
||||
|
||||
public Entity getFirstEntity() {
|
||||
|
||||
@@ -29,8 +29,6 @@ import java.util.Map;
|
||||
import com.alibaba.druid.filter.FilterChain;
|
||||
import com.alibaba.druid.filter.FilterChainImpl;
|
||||
import com.alibaba.druid.stat.JdbcSqlStat;
|
||||
import com.alibaba.druid.stat.JdbcStatContext;
|
||||
import com.alibaba.druid.stat.JdbcStatManager;
|
||||
|
||||
/**
|
||||
* @author wenshao<szujobs@hotmail.com>
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.alibaba.druid.sql.ast.statement.SQLColumnConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
|
||||
|
||||
@@ -17,7 +17,6 @@ package com.alibaba.druid.sql.dialect.postgresql.ast;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGExpr;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@@ -20,7 +20,6 @@ import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.PGAnalyticWindowing;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.PGOrderBy;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
package com.alibaba.druid.sql.dialect.postgresql.parser;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.OracleOrderBy;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.expr.OracleAnalyticWindowing;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.PGAggregateExpr;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.PGOrderBy;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGAnalytic;
|
||||
|
||||
Reference in New Issue
Block a user