diff --git a/pom.xml b/pom.xml
index 4879ff7713c18f3eb84f26dfa9b9917e2fc2697c..eaf5fad2c0789beec326becf7603acd4e5a15468 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.gitee.digital-engine
spring-domain
- 2.5.8
+ 2.6.1
pom
diff --git a/spring-boot-starter-domain/pom.xml b/spring-boot-starter-domain/pom.xml
index 2c12f8fe1989536c20cd40da4481059c638a867e..3530237517afdbf4ec8688a4e0031332645a72f1 100644
--- a/spring-boot-starter-domain/pom.xml
+++ b/spring-boot-starter-domain/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
spring-domain
- 2.5.8
+ 2.6.1
spring-boot-starter-domain
diff --git a/spring-domain-coating/src/main/java/com/gitee/spring/domain/coating/api/EntityCriterionBuilder.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/api/EntityCriterionBuilder.java
similarity index 34%
rename from spring-domain-coating/src/main/java/com/gitee/spring/domain/coating/api/EntityCriterionBuilder.java
rename to spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/api/EntityCriterionBuilder.java
index c5d6980fd78636c13f1939fdd2c2ba70a69e8896..ab2e6917b5d19ea22be624aaf5652b120af7ff74 100644
--- a/spring-domain-coating/src/main/java/com/gitee/spring/domain/coating/api/EntityCriterionBuilder.java
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/api/EntityCriterionBuilder.java
@@ -1,10 +1,9 @@
-package com.gitee.spring.domain.coating.api;
+package com.gitee.spring.boot.starter.domain.api;
import com.gitee.spring.domain.core.api.EntityCriterion;
-import com.gitee.spring.domain.core.api.EntityMapper;
public interface EntityCriterionBuilder {
- EntityCriterion newCriterion(EntityMapper entityMapper, String fieldName, Object fieldValue);
+ EntityCriterion newCriterion(String fieldName, Object fieldValue);
}
diff --git a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/EQEntityCriterionBuilder.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/EQEntityCriterionBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..c25e486f1eeea9e1b655839c600126f5feb183b0
--- /dev/null
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/EQEntityCriterionBuilder.java
@@ -0,0 +1,31 @@
+package com.gitee.spring.boot.starter.domain.builder;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gitee.spring.boot.starter.domain.api.EntityCriterionBuilder;
+import com.gitee.spring.domain.core.api.EntityCriterion;
+import com.gitee.spring.domain.core.constants.Operator;
+import com.gitee.spring.domain.core.entity.AbstractEntityCriterion;
+import com.gitee.spring.domain.core.entity.EntityExample;
+
+import java.util.Collection;
+
+public class EQEntityCriterionBuilder implements EntityCriterionBuilder {
+
+ @Override
+ public EntityCriterion newCriterion(String fieldName, Object fieldValue) {
+ return new AbstractEntityCriterion(fieldName, Operator.EQ, fieldValue) {
+ @Override
+ public void appendTo(EntityExample entityExample) {
+ QueryWrapper> queryWrapper = (QueryWrapper>) entityExample.getExample();
+ String fieldName = StrUtil.toUnderlineCase(this.fieldName);
+ if (fieldValue instanceof Collection) {
+ queryWrapper.in(fieldName, (Collection>) fieldValue);
+ } else {
+ queryWrapper.eq(fieldName, fieldValue);
+ }
+ }
+ };
+ }
+
+}
diff --git a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/GEEntityCriterionBuilder.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/GEEntityCriterionBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e276183277961f8d6397d1a63f29901705bb3e9
--- /dev/null
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/GEEntityCriterionBuilder.java
@@ -0,0 +1,25 @@
+package com.gitee.spring.boot.starter.domain.builder;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gitee.spring.boot.starter.domain.api.EntityCriterionBuilder;
+import com.gitee.spring.domain.core.api.EntityCriterion;
+import com.gitee.spring.domain.core.constants.Operator;
+import com.gitee.spring.domain.core.entity.AbstractEntityCriterion;
+import com.gitee.spring.domain.core.entity.EntityExample;
+
+public class GEEntityCriterionBuilder implements EntityCriterionBuilder {
+
+ @Override
+ public EntityCriterion newCriterion(String fieldName, Object fieldValue) {
+ return new AbstractEntityCriterion(fieldName, Operator.GE, fieldValue) {
+ @Override
+ public void appendTo(EntityExample entityExample) {
+ QueryWrapper> queryWrapper = (QueryWrapper>) entityExample.getExample();
+ String fieldName = StrUtil.toUnderlineCase(this.fieldName);
+ queryWrapper.ge(fieldName, fieldValue);
+ }
+ };
+ }
+
+}
diff --git a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/GTEntityCriterionBuilder.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/GTEntityCriterionBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..9dd568c99b0550cd36c9b3cdfbea1483a0a7c352
--- /dev/null
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/GTEntityCriterionBuilder.java
@@ -0,0 +1,25 @@
+package com.gitee.spring.boot.starter.domain.builder;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gitee.spring.boot.starter.domain.api.EntityCriterionBuilder;
+import com.gitee.spring.domain.core.api.EntityCriterion;
+import com.gitee.spring.domain.core.constants.Operator;
+import com.gitee.spring.domain.core.entity.AbstractEntityCriterion;
+import com.gitee.spring.domain.core.entity.EntityExample;
+
+public class GTEntityCriterionBuilder implements EntityCriterionBuilder {
+
+ @Override
+ public EntityCriterion newCriterion(String fieldName, Object fieldValue) {
+ return new AbstractEntityCriterion(fieldName, Operator.GT, fieldValue) {
+ @Override
+ public void appendTo(EntityExample entityExample) {
+ QueryWrapper> queryWrapper = (QueryWrapper>) entityExample.getExample();
+ String fieldName = StrUtil.toUnderlineCase(this.fieldName);
+ queryWrapper.gt(fieldName, fieldValue);
+ }
+ };
+ }
+
+}
diff --git a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/LEEntityCriterionBuilder.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/LEEntityCriterionBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..39edf59dcb3629626811f6500f6c2c1fc3c06ba2
--- /dev/null
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/LEEntityCriterionBuilder.java
@@ -0,0 +1,25 @@
+package com.gitee.spring.boot.starter.domain.builder;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gitee.spring.boot.starter.domain.api.EntityCriterionBuilder;
+import com.gitee.spring.domain.core.api.EntityCriterion;
+import com.gitee.spring.domain.core.constants.Operator;
+import com.gitee.spring.domain.core.entity.AbstractEntityCriterion;
+import com.gitee.spring.domain.core.entity.EntityExample;
+
+public class LEEntityCriterionBuilder implements EntityCriterionBuilder {
+
+ @Override
+ public EntityCriterion newCriterion(String fieldName, Object fieldValue) {
+ return new AbstractEntityCriterion(fieldName, Operator.LE, fieldValue) {
+ @Override
+ public void appendTo(EntityExample entityExample) {
+ QueryWrapper> queryWrapper = (QueryWrapper>) entityExample.getExample();
+ String fieldName = StrUtil.toUnderlineCase(this.fieldName);
+ queryWrapper.le(fieldName, fieldValue);
+ }
+ };
+ }
+
+}
diff --git a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/LTEntityCriterionBuilder.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/LTEntityCriterionBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..eade336c8275da6e5fabde819c7eb6db8871e426
--- /dev/null
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/builder/LTEntityCriterionBuilder.java
@@ -0,0 +1,25 @@
+package com.gitee.spring.boot.starter.domain.builder;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gitee.spring.boot.starter.domain.api.EntityCriterionBuilder;
+import com.gitee.spring.domain.core.api.EntityCriterion;
+import com.gitee.spring.domain.core.constants.Operator;
+import com.gitee.spring.domain.core.entity.AbstractEntityCriterion;
+import com.gitee.spring.domain.core.entity.EntityExample;
+
+public class LTEntityCriterionBuilder implements EntityCriterionBuilder {
+
+ @Override
+ public EntityCriterion newCriterion(String fieldName, Object fieldValue) {
+ return new AbstractEntityCriterion(fieldName, Operator.LT, fieldValue) {
+ @Override
+ public void appendTo(EntityExample entityExample) {
+ QueryWrapper> queryWrapper = (QueryWrapper>) entityExample.getExample();
+ String fieldName = StrUtil.toUnderlineCase(this.fieldName);
+ queryWrapper.lt(fieldName, fieldValue);
+ }
+ };
+ }
+
+}
diff --git a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/repository/MybatisPlusEntityMapper.java b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/repository/MybatisPlusEntityMapper.java
index cc38eb01afc8395300d30fa1cd49c842e0eb2f91..46212caa62355f7ace95e5bdcde20b1bd4da588f 100644
--- a/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/repository/MybatisPlusEntityMapper.java
+++ b/spring-boot-starter-domain/src/main/java/com/gitee/spring/boot/starter/domain/repository/MybatisPlusEntityMapper.java
@@ -1,29 +1,42 @@
package com.gitee.spring.boot.starter.domain.repository;
-import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gitee.spring.boot.starter.domain.api.EntityCriterionBuilder;
+import com.gitee.spring.boot.starter.domain.builder.*;
import com.gitee.spring.domain.core.api.EntityCriterion;
import com.gitee.spring.domain.core.api.EntityMapper;
-import com.gitee.spring.domain.core.entity.AbstractEntityCriterion;
+import com.gitee.spring.domain.core.constants.Operator;
import com.gitee.spring.domain.core.entity.BoundedContext;
import com.gitee.spring.domain.core.entity.EntityDefinition;
import com.gitee.spring.domain.core.entity.EntityExample;
-import java.util.Collection;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
public class MybatisPlusEntityMapper implements EntityMapper {
+ public static Map operatorEntityCriterionBuilderMap = new ConcurrentHashMap<>();
+
+ static {
+ operatorEntityCriterionBuilderMap.put(Operator.EQ, new EQEntityCriterionBuilder());
+ operatorEntityCriterionBuilderMap.put(Operator.GT, new GTEntityCriterionBuilder());
+ operatorEntityCriterionBuilderMap.put(Operator.GE, new GEEntityCriterionBuilder());
+ operatorEntityCriterionBuilderMap.put(Operator.LT, new LTEntityCriterionBuilder());
+ operatorEntityCriterionBuilderMap.put(Operator.LE, new LEEntityCriterionBuilder());
+ }
+
@Override
public Object newPage(Integer pageNum, Integer pageSize) {
return new Page<>(pageNum, pageSize);
}
@Override
- public List> getDataFromPage(Object dataPage) {
- return ((IPage>) dataPage).getRecords();
+ @SuppressWarnings("unchecked")
+ public List