diff --git a/README.md b/README.md
index 95e1c07172f6a5386352ab7f462d541ab15781d9..ed00fcfbaa4734c4718b9f815841f795b355e0d6 100644
--- a/README.md
+++ b/README.md
@@ -47,7 +47,7 @@
com.gitee.digital-engine
dorive-spring-boot-starter
- 3.4.2
+ 3.4.3.3
```
@@ -93,7 +93,7 @@ public class Tenant {
```java
@RootRepository
-@CoatingScan("xxx.xxx.xxx.xxx.xxx.query")
+@QueryScan("xxx.xxx.xxx.xxx.xxx.query")
public class TenantRepository extends MybatisPlusRepository {
}
```
@@ -143,7 +143,7 @@ tenantQuery.setOrder("desc");
tenantQuery.setPage(1);
tenantQuery.setLimit(10);
-List tenants = tenantRepository.selectByCoating(Selector.ALL, tenantQuery);
+List tenants = tenantRepository.selectByQuery(Selector.ALL, tenantQuery);
```
#### 更新数据
diff --git a/dorive-api/pom.xml b/dorive-api/pom.xml
index dbc29289910e5e802e58acdb8ea89b676a94689f..ca9f7c8ae970fd51b8f405d975957780d82d2dc4 100644
--- a/dorive-api/pom.xml
+++ b/dorive-api/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.4.3.1
+ 3.4.3.3
dorive-api
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/annotation/Field.java b/dorive-api/src/main/java/com/gitee/dorive/api/annotation/Field.java
index ff42c494c8ab2504f78497388a1efa33f899e9af..1cf133973d39448fb8541751c98f80e5908d8f39 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/annotation/Field.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/annotation/Field.java
@@ -27,6 +27,8 @@ import java.lang.annotation.*;
@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD})
public @interface Field {
+ boolean isId() default false;
+
@AliasFor("alias")
String value() default "";
diff --git a/dorive-event/src/main/java/com/gitee/dorive/event/annotation/Listener.java b/dorive-api/src/main/java/com/gitee/dorive/api/annotation/Id.java
similarity index 78%
rename from dorive-event/src/main/java/com/gitee/dorive/event/annotation/Listener.java
rename to dorive-api/src/main/java/com/gitee/dorive/api/annotation/Id.java
index 7f0e2a1723190caec2373e456080515e7cc6c6a9..169be88eddcf08a02f921ea483ae1fec6f5f9719 100644
--- a/dorive-event/src/main/java/com/gitee/dorive/event/annotation/Listener.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/annotation/Id.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package com.gitee.dorive.event.annotation;
+package com.gitee.dorive.api.annotation;
-import org.springframework.stereotype.Component;
+import org.springframework.core.annotation.AliasFor;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
@@ -26,11 +26,17 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-@Component
+@Field
@Inherited
@Documented
-@Target(ElementType.TYPE)
+@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
-public @interface Listener {
- Class> value();
+public @interface Id {
+
+ @AliasFor(annotation = Field.class)
+ boolean isId() default true;
+
+ @AliasFor(annotation = Field.class)
+ String value() default "id";
+
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/constant/Keys.java b/dorive-api/src/main/java/com/gitee/dorive/api/api/ImplFactory.java
similarity index 81%
rename from dorive-api/src/main/java/com/gitee/dorive/api/constant/Keys.java
rename to dorive-api/src/main/java/com/gitee/dorive/api/api/ImplFactory.java
index 75e0b5a498039c6719f78ad1b25624184884ea80..5e6f9f0c54f564e4e841fa349338a9ece77b8d3f 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/constant/Keys.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/api/ImplFactory.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package com.gitee.dorive.api.constant;
+package com.gitee.dorive.api.api;
+
+public interface ImplFactory {
+
+ T getInstance(Class clazz, Object... args);
-public interface Keys {
- String FIELD_EXECUTOR = "FIELD_EXECUTOR";
- String QUERIER = "QUERIER";
- String TABLE_INFO = "TABLE_INFO";
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/constant/Operator.java b/dorive-api/src/main/java/com/gitee/dorive/api/constant/Operator.java
index 797b7f1ddb1800aa71a42cc0307b259c16827c1f..d1debe82429bc7ebdc1dfe7a38c45666f58be9a7 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/constant/Operator.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/constant/Operator.java
@@ -30,6 +30,8 @@ public interface Operator {
String NOT_LIKE = "NOT LIKE";
String IS_NULL = "IS NULL";
String IS_NOT_NULL = "IS NOT NULL";
- String NULL_SWITCH = "NULL_SWITCH";
String MULTI_IN = "MULTI_IN";
+ String MULTI_NOT_IN = "MULTI_NOT_IN";
+ String AND = "AND";
+ String OR = "OR";
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/entity/def/FieldDef.java b/dorive-api/src/main/java/com/gitee/dorive/api/entity/def/FieldDef.java
index 0bcde9f33652aabbc0580379641fa7e32286c830..b4b90f8ad5584297ccee86af74c670de8a2a8428 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/entity/def/FieldDef.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/entity/def/FieldDef.java
@@ -32,6 +32,7 @@ import java.util.Map;
@AllArgsConstructor
public class FieldDef {
+ private boolean isId;
private String alias;
private Class> converter;
private String mapExp;
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityEle.java b/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityEle.java
index 3a89c4287ce271908f1d63d08488fe837cb48b47..4a409df9b5e6cdd6caa6e42e3625f3126cbe491b 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityEle.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityEle.java
@@ -26,8 +26,10 @@ import lombok.NoArgsConstructor;
import java.lang.reflect.AnnotatedElement;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
@Data
@NoArgsConstructor
@@ -37,8 +39,8 @@ public abstract class EntityEle {
private EntityDef entityDef;
private boolean aggregated;
private List bindingDefs;
- private PropProxy pkProxy;
- private Map fieldAliasMap;
+ private PropProxy idProxy;
+ private Map fieldAliasMapping;
public EntityEle(AnnotatedElement element) {
this.element = element;
@@ -56,17 +58,17 @@ public abstract class EntityEle {
}
public void initialize() {
- if (entityDef != null && pkProxy == null) {
+ if (entityDef != null && idProxy == null) {
doInitialize();
}
}
public boolean hasField(String field) {
- return fieldAliasMap.containsKey(field);
+ return fieldAliasMapping.containsKey(field);
}
public String toAlias(String field) {
- return fieldAliasMap.getOrDefault(field, field);
+ return fieldAliasMapping.getOrDefault(field, field);
}
public List toAliases(List fields) {
@@ -81,6 +83,18 @@ public abstract class EntityEle {
return fields;
}
+ public Set toAliases(Set fields) {
+ if (fields != null && !fields.isEmpty()) {
+ Set aliases = new LinkedHashSet<>(fields.size() * 4 / 3 + 1);
+ for (String field : fields) {
+ String alias = toAlias(field);
+ aliases.add(alias);
+ }
+ return aliases;
+ }
+ return fields;
+ }
+
protected abstract void doInitialize();
public abstract boolean isCollection();
@@ -91,4 +105,6 @@ public abstract class EntityEle {
public abstract Map getEntityFieldMap();
+ public abstract String getIdName();
+
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityField.java b/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityField.java
index 03eca7dc683140ec56359a2541762209f4c9d9f8..772c90ab6f8308d74fd9bf490879c7a734f1a101 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityField.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityField.java
@@ -18,8 +18,8 @@
package com.gitee.dorive.api.entity.element;
import cn.hutool.core.util.ReflectUtil;
-import com.gitee.dorive.api.entity.def.FieldDef;
import com.gitee.dorive.api.entity.def.EntityDef;
+import com.gitee.dorive.api.entity.def.FieldDef;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -81,8 +81,8 @@ public class EntityField extends EntityEle {
protected void doInitialize() {
if (entityType != null) {
entityType.initialize();
- setPkProxy(entityType.getPkProxy());
- setFieldAliasMap(entityType.getFieldAliasMap());
+ setIdProxy(entityType.getIdProxy());
+ setFieldAliasMapping(entityType.getFieldAliasMapping());
}
}
@@ -91,6 +91,11 @@ public class EntityField extends EntityEle {
return entityType != null ? entityType.getEntityFieldMap() : null;
}
+ @Override
+ public String getIdName() {
+ return entityType != null ? entityType.getIdName() : null;
+ }
+
public boolean isSameType(EntityField entityField) {
return type == entityField.getType() && genericType == entityField.getGenericType();
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityType.java b/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityType.java
index e1bdeebe473562cba2609c6af4a150c9ce84d316..c004e85f709e6338c675f4d4205e55be05a897e1 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityType.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/entity/element/EntityType.java
@@ -22,7 +22,7 @@ import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.gitee.dorive.api.api.PropProxy;
import com.gitee.dorive.api.entity.def.FieldDef;
-import com.gitee.dorive.api.exception.CircularDependencyException;
+import com.gitee.dorive.api.exception.DefineEntityException;
import com.gitee.dorive.api.impl.factory.PropProxyFactory;
import com.gitee.dorive.api.util.ReflectUtils;
import lombok.Data;
@@ -47,6 +47,7 @@ public class EntityType extends EntityEle {
private Class> type;
private String name;
+ private EntityField idField;
private Map entityFieldMap;
public static synchronized EntityType getInstance(Class> type) {
@@ -57,7 +58,7 @@ public class EntityType extends EntityEle {
CACHE.put(type, entityType);
LOCK.remove(type);
} else {
- throw new CircularDependencyException("Circular Dependency! type: " + type.getName());
+ throw new DefineEntityException("The entity nested itself! type: " + type.getName());
}
}
return entityType;
@@ -67,45 +68,44 @@ public class EntityType extends EntityEle {
super(type);
this.type = type;
this.name = type.getName();
-
List fields = ReflectUtils.getAllFields(type);
this.entityFieldMap = new LinkedHashMap<>(fields.size() * 4 / 3 + 1);
-
for (Field field : fields) {
if (!Modifier.isStatic(field.getModifiers())) {
try {
EntityField entityField = new EntityField(field);
- entityFieldMap.put(entityField.getName(), entityField);
-
- } catch (CircularDependencyException e) {
+ String fieldName = entityField.getName();
+ if (idField == null) {
+ FieldDef fieldDef = entityField.getFieldDef();
+ if ("id".equals(fieldName) || (fieldDef != null && fieldDef.isId())) {
+ idField = entityField;
+ }
+ }
+ entityFieldMap.put(fieldName, entityField);
+
+ } catch (DefineEntityException e) {
log.warn(e.getMessage());
}
}
}
-
initialize();
}
@Override
protected void doInitialize() {
Class> genericType = getGenericType();
- int initialCapacity = entityFieldMap.size() * 4 / 3 + 1;
- PropProxy pkProxy = null;
- Map propAliasMap = new LinkedHashMap<>(initialCapacity);
+ Assert.notNull(idField, "The id field cannot be null! type: {}", genericType.getName());
+ PropProxy idProxy = PropProxyFactory.newPropProxy(genericType, idField.getName());
+ setIdProxy(idProxy);
+ Map fieldAliasMapping = new LinkedHashMap<>(entityFieldMap.size() * 4 / 3 + 1);
for (EntityField entityField : entityFieldMap.values()) {
- String name = entityField.getName();
+ String fieldName = entityField.getName();
FieldDef fieldDef = entityField.getFieldDef();
- if ("id".equals(name)) {
- pkProxy = PropProxyFactory.newPropProxy(genericType, "id");
- }
- String alias = fieldDef != null ? fieldDef.getAlias() : StrUtil.toUnderlineCase(name);
- propAliasMap.put(name, alias);
+ String alias = fieldDef != null ? fieldDef.getAlias() : StrUtil.toUnderlineCase(fieldName);
+ fieldAliasMapping.put(fieldName, alias);
}
-
- Assert.notNull(pkProxy, "The primary key not found! type: {}", genericType.getName());
- setPkProxy(pkProxy);
- setFieldAliasMap(propAliasMap);
+ setFieldAliasMapping(fieldAliasMapping);
}
@Override
@@ -128,4 +128,9 @@ public class EntityType extends EntityEle {
return entityFieldMap;
}
+ @Override
+ public String getIdName() {
+ return idField.getName();
+ }
+
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/exception/CircularDependencyException.java b/dorive-api/src/main/java/com/gitee/dorive/api/exception/DefineEntityException.java
similarity index 88%
rename from dorive-api/src/main/java/com/gitee/dorive/api/exception/CircularDependencyException.java
rename to dorive-api/src/main/java/com/gitee/dorive/api/exception/DefineEntityException.java
index 21b0450915639bc649155cc261746017fb32ec83..b865065e2d25384fbb15059424da7a7be3784a1b 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/exception/CircularDependencyException.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/exception/DefineEntityException.java
@@ -22,9 +22,9 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
-public class CircularDependencyException extends RuntimeException {
+public class DefineEntityException extends RuntimeException {
- public CircularDependencyException(String message) {
+ public DefineEntityException(String message) {
super(message);
}
diff --git a/dorive-core/pom.xml b/dorive-core/pom.xml
index 9884ef570aa9c8a020a50471dde812858d0b06e9..23a98eb08aea157168fcfbb8d7eee9a43bc8c09f 100644
--- a/dorive-core/pom.xml
+++ b/dorive-core/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.4.3.1
+ 3.4.3.3
dorive-core
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/binder/BindingProcessor.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/binder/Processor.java
similarity index 96%
rename from dorive-core/src/main/java/com/gitee/dorive/core/api/binder/BindingProcessor.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/api/binder/Processor.java
index 879ab489e3e00e6f5e80972d8804759d053d4b8d..c54ff8168ff05e25e6d40421f91f4dc4a74f9cad 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/api/binder/BindingProcessor.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/binder/Processor.java
@@ -19,7 +19,7 @@ package com.gitee.dorive.core.api.binder;
import com.gitee.dorive.core.api.context.Context;
-public interface BindingProcessor {
+public interface Processor {
Object input(Context context, Object value);
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Context.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Context.java
index 8957713afa6624b564c9ec58442ab25015716469..ea47340ada39882cb44d2e8ec6f4f62a9953052a 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Context.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Context.java
@@ -19,10 +19,14 @@ package com.gitee.dorive.core.api.context;
import java.util.Map;
-public interface Context {
-
- Selector getSelector();
+public interface Context extends Options {
Map getAttachments();
+ void setAttachment(String name, Object value);
+
+ Object getAttachment(String name);
+
+ void removeAttachment(String name);
+
}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Node.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Matcher.java
similarity index 92%
rename from dorive-core/src/main/java/com/gitee/dorive/core/api/context/Node.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/api/context/Matcher.java
index 21b24d8ba9f5448d144086901de4251bea1c3d8d..d71bd7c43bad0ac5aa74ec8802ca1635697aa4d9 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Node.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Matcher.java
@@ -17,10 +17,8 @@
package com.gitee.dorive.core.api.context;
-public interface Node {
+public interface Matcher {
- boolean isRoot();
-
- String getName();
+ boolean matches(Context context);
}
diff --git a/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/entity/Segment.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Options.java
similarity index 61%
rename from dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/entity/Segment.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/api/context/Options.java
index db497c4ce3eb740205b14309f5f95a58bbfeb326..545275e78a3c83cff47e2d4428c5acd4c9ddd912 100644
--- a/dorive-spring-boot-starter/src/main/java/com/gitee/dorive/spring/boot/starter/entity/Segment.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Options.java
@@ -15,29 +15,24 @@
* limitations under the License.
*/
-package com.gitee.dorive.spring.boot.starter.entity;
+package com.gitee.dorive.core.api.context;
-import lombok.Data;
+import com.gitee.dorive.core.entity.context.EnumOptions;
+import com.gitee.dorive.core.entity.option.SelectType;
-import java.util.List;
+import java.util.Map;
-@Data
-public class Segment {
+public interface Options {
- private boolean reachable;
- private boolean dirtyQuery;
- private List directedSegments;
+ Options ROOT = new EnumOptions(SelectType.class, SelectType.ROOT);
+ Options ALL = new EnumOptions(SelectType.class, SelectType.ALL);
- public boolean isAvailable() {
- return reachable && dirtyQuery;
- }
+ Map, Object> getOptions();
- public String getTableName() {
- return null;
- }
+ void setOption(Class> type, Object value);
- public String getTableAlias() {
- return null;
- }
+ Object getOption(Class> type);
+
+ void removeOption(Class> type);
}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Selector.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Selector.java
index 96be4e7ece09d7789b6b0ca74b15ba172985ed5f..af7f7df65b03beadb0324d5886a3b52393492f53 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Selector.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/context/Selector.java
@@ -17,20 +17,13 @@
package com.gitee.dorive.core.api.context;
-import com.gitee.dorive.core.impl.selector.AllSelector;
-import com.gitee.dorive.core.impl.selector.EmptySelector;
-import com.gitee.dorive.core.impl.selector.RootSelector;
-
import java.util.List;
+import java.util.Set;
-public interface Selector {
-
- Selector EMPTY = new EmptySelector();
- Selector ROOT = new RootSelector();
- Selector ALL = new AllSelector();
+public interface Selector extends Options {
- boolean matches(Context context, Node node);
+ Set getNames();
- List select(Context context, Node node);
+ List select(String name);
}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/Converter.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/Converter.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f85ca0b5132267adc5fdb7cc85471039846d247
--- /dev/null
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/Converter.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.core.api.converter;
+
+public interface Converter {
+
+ Object reconstitute(Object value);
+
+ Object deconstruct(Object value);
+
+}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/executor/EntityFactory.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/EntityFactory.java
similarity index 95%
rename from dorive-core/src/main/java/com/gitee/dorive/core/api/executor/EntityFactory.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/api/converter/EntityFactory.java
index 789cc202d5965b269bbb59ea72f46a4742b203ab..465ed494da5d7a73518e8f51e6c646c8288aac3a 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/api/executor/EntityFactory.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/EntityFactory.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.api.executor;
+package com.gitee.dorive.core.api.converter;
import com.gitee.dorive.core.api.context.Context;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/EntityMapper.java
similarity index 67%
rename from dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/api/converter/EntityMapper.java
index 0898c63063df9888a15e2246604124bf8db83ec0..797999132ff9a2eda9e1e27742a8a006fc9af041 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/selector/AbstractSelector.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/converter/EntityMapper.java
@@ -15,19 +15,22 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.impl.selector;
+package com.gitee.dorive.core.api.converter;
-import com.gitee.dorive.core.api.context.Context;
-import com.gitee.dorive.core.api.context.Node;
-import com.gitee.dorive.core.api.context.Selector;
+public interface EntityMapper {
-import java.util.List;
+ String fieldToAlias(String field);
-public abstract class AbstractSelector implements Selector {
+ String aliasToField(String alias);
- @Override
- public List select(Context context, Node node) {
- return null;
- }
+ String fieldToProp(String field);
+
+ boolean hasConverter();
+
+ Object fieldToAlias(String alias, Object value);
+
+ Object aliasToField(String field, Object value);
+
+ Object fieldToProp(String prop, Object value);
}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/api/executor/FieldConverter.java b/dorive-core/src/main/java/com/gitee/dorive/core/api/executor/EntityJoiner.java
similarity index 74%
rename from dorive-core/src/main/java/com/gitee/dorive/core/api/executor/FieldConverter.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/api/executor/EntityJoiner.java
index 36925d5297e74b1edce7ac3d94e730cf4d2a8b57..132a3f48297b40e99e9d38b3a1545d36f262bc68 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/api/executor/FieldConverter.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/api/executor/EntityJoiner.java
@@ -18,14 +18,15 @@
package com.gitee.dorive.core.api.executor;
import com.gitee.dorive.core.api.context.Context;
-import com.gitee.dorive.core.entity.executor.Criterion;
+import com.gitee.dorive.core.entity.executor.Example;
+import com.gitee.dorive.core.entity.executor.Result;
-public interface FieldConverter {
+import java.util.List;
- Object convert(Context context, Criterion criterion, Object value);
+public interface EntityJoiner {
- Object reconstitute(String name, Object value);
+ Example newExample(Context context, List