diff --git a/src/main/java/com/alibaba/druid/mapping/MappingEngine.java b/src/main/java/com/alibaba/druid/mapping/MappingEngine.java index c3a8801298..78f89d11bc 100644 --- a/src/main/java/com/alibaba/druid/mapping/MappingEngine.java +++ b/src/main/java/com/alibaba/druid/mapping/MappingEngine.java @@ -32,11 +32,11 @@ public class MappingEngine { public MappingEngine(){ this(new MySqlMappingProvider()); } - + public MappingEngine(MappingProvider provider){ this.provider = provider; } - + public Entity getFirstEntity() { for (Map.Entry entry : entities.entrySet()) { return entry.getValue(); @@ -76,11 +76,11 @@ public class MappingEngine { public MappingVisitor createMappingVisitor() { return provider.createMappingVisitor(this); } - + public MappingVisitor createMappingVisitor(List parameters) { return createMappingVisitor(new MappingContext(parameters)); } - + public MappingVisitor createMappingVisitor(MappingContext context) { return provider.createMappingVisitor(this, context); } @@ -92,7 +92,7 @@ public class MappingEngine { public SQLSelectQueryBlock explainToSelectSQLObject(String sql) { return provider.explainToSelectSQLObject(this, sql); } - + public String explainToSelectSQL(String sql) { return explainToSelectSQL(sql, Collections.emptyList()); } @@ -100,7 +100,7 @@ public class MappingEngine { public String explainToSelectSQL(String sql, List parameters) { return explainToSelectSQL(sql, new MappingContext(parameters)); } - + public String explainToSelectSQL(String sql, MappingContext context) { SQLSelectQueryBlock query = explainToSelectSQLObject(sql); @@ -111,9 +111,9 @@ public class MappingEngine { return toSQL(query); } - + public void afterResole(MappingVisitor visitor) { - + } public SQLDeleteStatement explainToDeleteSQLObject(String sql) { @@ -122,7 +122,7 @@ public class MappingEngine { public String explainToDeleteSQL(String sql) { SQLDeleteStatement stmt = explainToDeleteSQLObject(sql); - + MappingVisitor visitor = this.createMappingVisitor(Collections.emptyList()); stmt.accept(visitor); visitor.afterResolve(); @@ -130,12 +130,12 @@ public class MappingEngine { return toSQL(stmt); } - - public String resolveTableName(Entity entity, List parameters) { + + public String resolveTableName(Entity entity, MappingContext context) { return entity.getTableName(); } - - public String resovleColumnName(Entity entity, Property property, List parameters) { + + public String resovleColumnName(Entity entity, Property property, MappingContext context) { return property.getDbColumnName(); } diff --git a/src/main/java/com/alibaba/druid/mapping/spi/MSSQLServerMappingVisitor.java b/src/main/java/com/alibaba/druid/mapping/spi/MSSQLServerMappingVisitor.java index 967f5923dd..189f8169a2 100644 --- a/src/main/java/com/alibaba/druid/mapping/spi/MSSQLServerMappingVisitor.java +++ b/src/main/java/com/alibaba/druid/mapping/spi/MSSQLServerMappingVisitor.java @@ -69,12 +69,12 @@ public class MSSQLServerMappingVisitor extends SQLServerASTVisitorAdapter implem @Override public String resolveTableName(Entity entity) { - return engine.resolveTableName(entity, context.getParameters()); + return engine.resolveTableName(entity, context); } @Override public String resovleColumnName(Entity entity, Property property) { - return engine.resovleColumnName(entity, property, context.getParameters()); + return engine.resovleColumnName(entity, property, context); } public Entity getEntity(String name) { diff --git a/src/main/java/com/alibaba/druid/mapping/spi/MappingVisitorUtils.java b/src/main/java/com/alibaba/druid/mapping/spi/MappingVisitorUtils.java index b052c070a1..aab2f0e3e3 100644 --- a/src/main/java/com/alibaba/druid/mapping/spi/MappingVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/mapping/spi/MappingVisitorUtils.java @@ -208,7 +208,10 @@ public class MappingVisitorUtils { Property property = (Property) x.getLeft().getAttribute(MAPPING_PROPERTY); Object value = x.getRight().getAttribute(MAPPING_VALUE); - visitor.getPropertyValues().add(new PropertyValue(entity, property, value)); + PropertyValue propertyValue = new PropertyValue(entity, property, value); + propertyValue.putAttribute("mapping.expr", x.getRight()); + + visitor.getPropertyValues().add(propertyValue); return false; } @@ -221,7 +224,10 @@ public class MappingVisitorUtils { Property property = (Property) x.getLeft().getAttribute(MAPPING_PROPERTY); Object value = x.getRight().getAttribute(MAPPING_VALUE); - visitor.getPropertyValues().add(new PropertyValue(entity, property, value)); + PropertyValue propertyValue = new PropertyValue(entity, property, value); + propertyValue.putAttribute("mapping.expr", x.getRight()); + + visitor.getPropertyValues().add(propertyValue); return false; } diff --git a/src/main/java/com/alibaba/druid/mapping/spi/MySqlMappingVisitor.java b/src/main/java/com/alibaba/druid/mapping/spi/MySqlMappingVisitor.java index 0cf7d56529..da16c5ec05 100644 --- a/src/main/java/com/alibaba/druid/mapping/spi/MySqlMappingVisitor.java +++ b/src/main/java/com/alibaba/druid/mapping/spi/MySqlMappingVisitor.java @@ -69,12 +69,12 @@ public class MySqlMappingVisitor extends MySqlASTVisitorAdapter implements Mappi @Override public String resolveTableName(Entity entity) { - return engine.resolveTableName(entity, context.getParameters()); + return engine.resolveTableName(entity, context); } @Override public String resovleColumnName(Entity entity, Property property) { - return engine.resovleColumnName(entity, property, context.getParameters()); + return engine.resovleColumnName(entity, property, context); } public Entity getEntity(String name) { diff --git a/src/main/java/com/alibaba/druid/mapping/spi/OracleMappingVisitor.java b/src/main/java/com/alibaba/druid/mapping/spi/OracleMappingVisitor.java index a279ac4942..f3ee0d3574 100644 --- a/src/main/java/com/alibaba/druid/mapping/spi/OracleMappingVisitor.java +++ b/src/main/java/com/alibaba/druid/mapping/spi/OracleMappingVisitor.java @@ -71,12 +71,12 @@ public class OracleMappingVisitor extends OracleASTVisitorAdapter implements Map @Override public String resolveTableName(Entity entity) { - return engine.resolveTableName(entity, context.getParameters()); + return engine.resolveTableName(entity, context); } @Override public String resovleColumnName(Entity entity, Property property) { - return engine.resovleColumnName(entity, property, context.getParameters()); + return engine.resovleColumnName(entity, property, context); } public Entity getEntity(String name) { diff --git a/src/main/java/com/alibaba/druid/mapping/spi/PropertyValue.java b/src/main/java/com/alibaba/druid/mapping/spi/PropertyValue.java index 8f1d770260..908e9cff86 100644 --- a/src/main/java/com/alibaba/druid/mapping/spi/PropertyValue.java +++ b/src/main/java/com/alibaba/druid/mapping/spi/PropertyValue.java @@ -1,9 +1,10 @@ package com.alibaba.druid.mapping.spi; import com.alibaba.druid.mapping.Entity; +import com.alibaba.druid.mapping.MappingObject; import com.alibaba.druid.mapping.Property; -public class PropertyValue { +public class PropertyValue extends MappingObject { private Property property; private Entity entity;