diff --git a/pom.xml b/pom.xml
index 9cd5176..490436f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,9 +11,10 @@
spring-boot-service-template-common
- spring-boot-service-template-eq
- spring-boot-service-template-jpa
- spring-boot-service-template-xbatis
+ spring-boot-service-template-database/spring-boot-service-template-database-common
+ spring-boot-service-template-database/spring-boot-service-template-database-eq
+ spring-boot-service-template-database/spring-boot-service-template-database-jpa
+ spring-boot-service-template-database/spring-boot-service-template-database-xbatis
@@ -29,6 +30,7 @@
1.6.3
1.5.0
2.0.0
+ 3.1.68
@@ -36,6 +38,10 @@
org.projectlombok
lombok
+
+ org.jspecify
+ jspecify
+
@@ -47,7 +53,7 @@
com.lanyuanxiaoyao
- spring-boot-service-template-jpa
+ spring-boot-service-template-database-common
${project.version}
@@ -67,23 +73,6 @@
import
-
- com.blinkfox
- fenix-spring-boot-starter
- ${fenix.version}
-
-
- io.github.openfeign.querydsl
- querydsl-jpa
- ${querydsl.version}
-
-
-
- org.hibernate.orm
- hibernate-ant
- ${hibernate.version}
-
-
org.mapstruct
mapstruct
@@ -102,10 +91,21 @@
${datasource-decorator.version}
+
- org.jspecify
- jspecify
- 1.0.0
+ com.blinkfox
+ fenix-spring-boot-starter
+ ${fenix.version}
+
+
+ io.github.openfeign.querydsl
+ querydsl-jpa
+ ${querydsl.version}
+
+
+ org.hibernate.orm
+ hibernate-ant
+ ${hibernate.version}
@@ -116,6 +116,19 @@
pom
import
+
+
+
+ com.easy-query
+ sql-springboot4-starter
+ 3.1.68
+
+
+
+ org.jspecify
+ jspecify
+ 1.0.0
+
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryParser.java b/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryParser.java
deleted file mode 100644
index e688edb..0000000
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryParser.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.lanyuanxiaoyao.service.template.common.service;
-
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
-import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
-
-public abstract class QueryParser {
- protected abstract void nullEqual(Query.Queryable queryable);
-
- protected abstract void notNullEqual(Query.Queryable queryable);
-
- protected abstract void empty(Query.Queryable queryable);
-
- protected abstract void notEmpty(Query.Queryable queryable);
-
- protected abstract void equal(Query.Queryable queryable);
-
- protected abstract void notEqual(Query.Queryable queryable);
-
- protected abstract void like(Query.Queryable queryable);
-
- protected abstract void notLike(Query.Queryable queryable);
-
- protected abstract void contain(Query.Queryable queryable);
-
- protected abstract void notContain(Query.Queryable queryable);
-
- protected abstract void startWith(Query.Queryable queryable);
-
- protected abstract void notStartWith(Query.Queryable queryable);
-
- protected abstract void endWith(Query.Queryable queryable);
-
- protected abstract void notEndWith(Query.Queryable queryable);
-
- protected abstract void great(Query.Queryable queryable);
-
- protected abstract void less(Query.Queryable queryable);
-
- protected abstract void greatEqual(Query.Queryable queryable);
-
- protected abstract void lessEqual(Query.Queryable queryable);
-
- protected abstract void inside(Query.Queryable queryable);
-
- protected abstract void notInside(Query.Queryable queryable);
-
- protected abstract void between(Query.Queryable queryable);
-
- protected abstract void notBetween(Query.Queryable queryable);
-
- protected abstract O build();
-
- public O build(Query.Queryable queryable) {
- if (ObjectHelper.isNull(queryable)) {
- return null;
- }
- if (ObjectHelper.isNotEmpty(queryable.nullEqual())) {
- nullEqual(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notNullEqual())) {
- notNullEqual(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.empty())) {
- empty(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notEmpty())) {
- notEmpty(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.equal())) {
- equal(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notEqual())) {
- notEqual(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.like())) {
- like(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notLike())) {
- notLike(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.contain())) {
- contain(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notContain())) {
- notContain(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.startWith())) {
- startWith(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notStartWith())) {
- notStartWith(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.endWith())) {
- endWith(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notEndWith())) {
- notEndWith(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.great())) {
- great(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.less())) {
- less(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.greatEqual())) {
- greatEqual(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.lessEqual())) {
- lessEqual(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.inside())) {
- inside(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notInside())) {
- notInside(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.between())) {
- between(queryable);
- }
- if (ObjectHelper.isNotEmpty(queryable.notBetween())) {
- notBetween(queryable);
- }
- return build();
- }
-}
diff --git a/spring-boot-service-template-database/spring-boot-service-template-database-common/pom.xml b/spring-boot-service-template-database/spring-boot-service-template-database-common/pom.xml
new file mode 100644
index 0000000..887465d
--- /dev/null
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/pom.xml
@@ -0,0 +1,31 @@
+
+
+ 4.0.0
+
+ com.lanyuanxiaoyao
+ spring-boot-service-template
+ 1.1.0-SNAPSHOT
+
+
+ spring-boot-service-template-database-common
+
+
+
+ com.lanyuanxiaoyao
+ spring-boot-service-template-common
+
+
+
+ org.mapstruct
+ mapstruct
+ compile
+
+
+
+ com.github.gavlyukovskiy
+ p6spy-spring-boot-starter
+
+
+
\ No newline at end of file
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/QueryController.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/QueryController.java
similarity index 91%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/QueryController.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/QueryController.java
index 87572aa..75cc7cb 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/QueryController.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/QueryController.java
@@ -1,7 +1,7 @@
-package com.lanyuanxiaoyao.service.template.common.controller;
+package com.lanyuanxiaoyao.service.template.database.common.controller;
-import com.lanyuanxiaoyao.service.template.common.entity.GlobalResponse;
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
+import com.lanyuanxiaoyao.service.template.database.common.entity.GlobalResponse;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
/**
* 查询控制器接口,用于定义统一的查询实体详情和列表的接口规范
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/RemoveController.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/RemoveController.java
similarity index 83%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/RemoveController.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/RemoveController.java
index 34ebe04..bbfb7e6 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/RemoveController.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/RemoveController.java
@@ -1,6 +1,6 @@
-package com.lanyuanxiaoyao.service.template.common.controller;
+package com.lanyuanxiaoyao.service.template.database.common.controller;
-import com.lanyuanxiaoyao.service.template.common.entity.GlobalResponse;
+import com.lanyuanxiaoyao.service.template.database.common.entity.GlobalResponse;
/**
* 删除控制器接口,用于定义统一的删除实体对象的接口规范
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/SaveController.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/SaveController.java
similarity index 85%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/SaveController.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/SaveController.java
index c14f421..d6bef16 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/SaveController.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/SaveController.java
@@ -1,6 +1,6 @@
-package com.lanyuanxiaoyao.service.template.common.controller;
+package com.lanyuanxiaoyao.service.template.database.common.controller;
-import com.lanyuanxiaoyao.service.template.common.entity.GlobalResponse;
+import com.lanyuanxiaoyao.service.template.database.common.entity.GlobalResponse;
/**
* 保存控制器接口,用于定义统一的保存实体对象的接口规范
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/SimpleController.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/SimpleController.java
similarity index 69%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/SimpleController.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/SimpleController.java
index 8ddf1d8..3b9872a 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/controller/SimpleController.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/controller/SimpleController.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.controller;
+package com.lanyuanxiaoyao.service.template.database.common.controller;
public interface SimpleController extends SaveController, QueryController, RemoveController {
}
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/GlobalResponse.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/GlobalResponse.java
similarity index 99%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/GlobalResponse.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/GlobalResponse.java
index 7685580..eeeba43 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/GlobalResponse.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/GlobalResponse.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.entity;
+package com.lanyuanxiaoyao.service.template.database.common.entity;
import java.util.List;
import java.util.Map;
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/Page.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/Page.java
similarity index 92%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/Page.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/Page.java
index 0018540..046a007 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/Page.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/Page.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.entity;
+package com.lanyuanxiaoyao.service.template.database.common.entity;
import java.util.List;
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/Query.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/Query.java
similarity index 99%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/Query.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/Query.java
index db9ddf9..b3f8ec1 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/entity/Query.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/entity/Query.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.entity;
+package com.lanyuanxiaoyao.service.template.database.common.entity;
import java.io.Serializable;
import java.util.List;
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/IdNotFoundException.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/IdNotFoundException.java
similarity index 69%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/IdNotFoundException.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/IdNotFoundException.java
index 21b9aad..1248096 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/IdNotFoundException.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/IdNotFoundException.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.exception;
+package com.lanyuanxiaoyao.service.template.database.common.exception;
public class IdNotFoundException extends RuntimeException {
public IdNotFoundException(Long id) {
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotCollectionException.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotCollectionException.java
similarity index 71%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotCollectionException.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotCollectionException.java
index b6fb1cc..681a86f 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotCollectionException.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotCollectionException.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.exception;
+package com.lanyuanxiaoyao.service.template.database.common.exception;
public class NotCollectionException extends RuntimeException {
public NotCollectionException(String variable) {
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotComparableException.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotComparableException.java
similarity index 71%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotComparableException.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotComparableException.java
index d6be277..71876ca 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotComparableException.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotComparableException.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.exception;
+package com.lanyuanxiaoyao.service.template.database.common.exception;
public class NotComparableException extends RuntimeException {
public NotComparableException(String variable) {
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotStringException.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotStringException.java
similarity index 70%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotStringException.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotStringException.java
index 17a1274..80ca6c8 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/exception/NotStringException.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/exception/NotStringException.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.exception;
+package com.lanyuanxiaoyao.service.template.database.common.exception;
public class NotStringException extends RuntimeException {
public NotStringException(String variable) {
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/helper/SnowflakeHelper.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/helper/SnowflakeHelper.java
similarity index 95%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/helper/SnowflakeHelper.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/helper/SnowflakeHelper.java
index 529c763..003e13d 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/helper/SnowflakeHelper.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/helper/SnowflakeHelper.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.helper;
+package com.lanyuanxiaoyao.service.template.database.common.helper;
import java.time.Instant;
diff --git a/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryParser.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryParser.java
new file mode 100644
index 0000000..4733411
--- /dev/null
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryParser.java
@@ -0,0 +1,128 @@
+package com.lanyuanxiaoyao.service.template.database.common.service;
+
+import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
+import lombok.AccessLevel;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
+public abstract class QueryParser {
+ private final Query.Queryable queryable;
+ private final O container;
+
+ protected abstract void nullEqual(Query.Queryable queryable, O container);
+
+ protected abstract void notNullEqual(Query.Queryable queryable, O container);
+
+ protected abstract void empty(Query.Queryable queryable, O container);
+
+ protected abstract void notEmpty(Query.Queryable queryable, O container);
+
+ protected abstract void equal(Query.Queryable queryable, O container);
+
+ protected abstract void notEqual(Query.Queryable queryable, O container);
+
+ protected abstract void like(Query.Queryable queryable, O container);
+
+ protected abstract void notLike(Query.Queryable queryable, O container);
+
+ protected abstract void contain(Query.Queryable queryable, O container);
+
+ protected abstract void notContain(Query.Queryable queryable, O container);
+
+ protected abstract void startWith(Query.Queryable queryable, O container);
+
+ protected abstract void notStartWith(Query.Queryable queryable, O container);
+
+ protected abstract void endWith(Query.Queryable queryable, O container);
+
+ protected abstract void notEndWith(Query.Queryable queryable, O container);
+
+ protected abstract void great(Query.Queryable queryable, O container);
+
+ protected abstract void less(Query.Queryable queryable, O container);
+
+ protected abstract void greatEqual(Query.Queryable queryable, O container);
+
+ protected abstract void lessEqual(Query.Queryable queryable, O container);
+
+ protected abstract void inside(Query.Queryable queryable, O container);
+
+ protected abstract void notInside(Query.Queryable queryable, O container);
+
+ protected abstract void between(Query.Queryable queryable, O container);
+
+ protected abstract void notBetween(Query.Queryable queryable, O container);
+
+ public void build() {
+ if (ObjectHelper.isNull(queryable)) {
+ return;
+ }
+ if (ObjectHelper.isNotEmpty(queryable.nullEqual())) {
+ nullEqual(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notNullEqual())) {
+ notNullEqual(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.empty())) {
+ empty(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notEmpty())) {
+ notEmpty(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.equal())) {
+ equal(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notEqual())) {
+ notEqual(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.like())) {
+ like(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notLike())) {
+ notLike(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.contain())) {
+ contain(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notContain())) {
+ notContain(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.startWith())) {
+ startWith(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notStartWith())) {
+ notStartWith(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.endWith())) {
+ endWith(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notEndWith())) {
+ notEndWith(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.great())) {
+ great(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.less())) {
+ less(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.greatEqual())) {
+ greatEqual(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.lessEqual())) {
+ lessEqual(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.inside())) {
+ inside(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notInside())) {
+ notInside(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.between())) {
+ between(queryable, container);
+ }
+ if (ObjectHelper.isNotEmpty(queryable.notBetween())) {
+ notBetween(queryable, container);
+ }
+ }
+}
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryService.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryService.java
similarity index 92%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryService.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryService.java
index a2bec1d..5ac7899 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryService.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryService.java
@@ -1,7 +1,7 @@
-package com.lanyuanxiaoyao.service.template.common.service;
+package com.lanyuanxiaoyao.service.template.database.common.service;
-import com.lanyuanxiaoyao.service.template.common.entity.Page;
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Page;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
import java.util.List;
import java.util.Set;
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/RemoveService.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/RemoveService.java
similarity index 93%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/RemoveService.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/RemoveService.java
index f8b8656..c72ecd4 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/RemoveService.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/RemoveService.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.service;
+package com.lanyuanxiaoyao.service.template.database.common.service;
import java.util.Set;
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/SaveService.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/SaveService.java
similarity index 94%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/SaveService.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/SaveService.java
index b9a0741..dc74427 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/SaveService.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/SaveService.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.service;
+package com.lanyuanxiaoyao.service.template.database.common.service;
/**
* 保存服务接口,用于定义统一的保存实体对象的服务规范
diff --git a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/SimpleService.java b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/SimpleService.java
similarity index 62%
rename from spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/SimpleService.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/SimpleService.java
index 11df5c1..3dd6a97 100644
--- a/spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/SimpleService.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/SimpleService.java
@@ -1,4 +1,4 @@
-package com.lanyuanxiaoyao.service.template.common.service;
+package com.lanyuanxiaoyao.service.template.database.common.service;
public interface SimpleService extends SaveService, QueryService, RemoveService {
}
diff --git a/spring-boot-service-template-eq/pom.xml b/spring-boot-service-template-database/spring-boot-service-template-database-eq/pom.xml
similarity index 80%
rename from spring-boot-service-template-eq/pom.xml
rename to spring-boot-service-template-database/spring-boot-service-template-database-eq/pom.xml
index 5a80493..58ab8c7 100644
--- a/spring-boot-service-template-eq/pom.xml
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-eq/pom.xml
@@ -9,32 +9,23 @@
1.1.0-SNAPSHOT
- spring-boot-service-template-eq
+ spring-boot-service-template-database-eq
com.lanyuanxiaoyao
- spring-boot-service-template-common
+ spring-boot-service-template-database-common
+
org.springframework.boot
spring-boot-starter-web
+ provided
com.easy-query
sql-springboot4-starter
- 3.1.68
-
-
-
- com.github.gavlyukovskiy
- p6spy-spring-boot-starter
-
-
-
- org.jspecify
- jspecify
@@ -70,7 +61,7 @@
com.easy-query
sql-processor
- 3.1.68
+ ${easy-query.version}
diff --git a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
similarity index 96%
rename from spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
index c7ed64b..92cab61 100644
--- a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java
@@ -2,10 +2,10 @@ package com.lanyuanxiaoyao.service.template.eq.controller;
import com.easy.query.core.proxy.AbstractProxyEntity;
import com.easy.query.core.proxy.ProxyEntityAvailable;
-import com.lanyuanxiaoyao.service.template.common.controller.SimpleController;
-import com.lanyuanxiaoyao.service.template.common.entity.GlobalResponse;
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
+import com.lanyuanxiaoyao.service.template.database.common.controller.SimpleController;
+import com.lanyuanxiaoyao.service.template.database.common.entity.GlobalResponse;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
import com.lanyuanxiaoyao.service.template.eq.entity.SimpleEntity;
import com.lanyuanxiaoyao.service.template.eq.service.SimpleServiceSupport;
import java.util.function.Function;
diff --git a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/IdOnlyEntity.java b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/IdOnlyEntity.java
similarity index 100%
rename from spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/IdOnlyEntity.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/IdOnlyEntity.java
diff --git a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SimpleEntity.java b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SimpleEntity.java
similarity index 100%
rename from spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SimpleEntity.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SimpleEntity.java
diff --git a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java
similarity index 82%
rename from spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java
index 22d5a4d..fc8ae05 100644
--- a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java
@@ -1,7 +1,7 @@
package com.lanyuanxiaoyao.service.template.eq.entity;
import com.easy.query.core.basic.extension.generated.PrimaryKeyGenerator;
-import com.lanyuanxiaoyao.service.template.common.helper.SnowflakeHelper;
+import com.lanyuanxiaoyao.service.template.database.common.helper.SnowflakeHelper;
import java.io.Serializable;
import org.springframework.stereotype.Component;
diff --git a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java
similarity index 73%
rename from spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java
index 8305488..c020994 100644
--- a/spring-boot-service-template-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-eq/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java
@@ -4,12 +4,12 @@ import com.easy.query.api.proxy.client.EasyEntityQuery;
import com.easy.query.core.enums.SQLExecuteStrategyEnum;
import com.easy.query.core.proxy.AbstractProxyEntity;
import com.easy.query.core.proxy.ProxyEntityAvailable;
-import com.lanyuanxiaoyao.service.template.common.entity.Page;
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
-import com.lanyuanxiaoyao.service.template.common.exception.IdNotFoundException;
import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
-import com.lanyuanxiaoyao.service.template.common.service.QueryParser;
-import com.lanyuanxiaoyao.service.template.common.service.SimpleService;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Page;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
+import com.lanyuanxiaoyao.service.template.database.common.exception.IdNotFoundException;
+import com.lanyuanxiaoyao.service.template.database.common.service.QueryParser;
+import com.lanyuanxiaoyao.service.template.database.common.service.SimpleService;
import com.lanyuanxiaoyao.service.template.eq.entity.SimpleEntity;
import java.util.ArrayList;
import java.util.List;
@@ -17,6 +17,8 @@ import java.util.Optional;
import java.util.Set;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.mapstruct.Named;
+import org.springframework.transaction.annotation.Transactional;
@Slf4j
@RequiredArgsConstructor
@@ -27,6 +29,7 @@ public abstract class SimpleServiceSupport target;
+ @Transactional(rollbackFor = Throwable.class)
@Override
public Long save(ENTITY entity) {
if (ObjectHelper.isNull(entity.getId())) {
@@ -39,6 +42,7 @@ public abstract class SimpleServiceSupport entities) {
var insertList = new ArrayList();
@@ -94,7 +98,7 @@ public abstract class SimpleServiceSupport new EqQueryParser(proxy).build(query.query()))
+ .where(proxy -> new EqQueryParser(query.query(), proxy).build())
.orderBy(ObjectHelper.isNotEmpty(query.sort()), proxy -> query.sort().forEach(sort -> proxy.anyColumn(sort.column()).orderBy(Query.Sortable.Direction.ASC.equals(sort.direction()))))
.toPageResult(index, size);
@@ -110,16 +114,19 @@ public abstract class SimpleServiceSupport new IdNotFoundException(id));
}
+ @Transactional(rollbackFor = Throwable.class)
@Override
public void remove(Long id) {
if (ObjectHelper.isNotNull(id)) {
@@ -130,6 +137,7 @@ public abstract class SimpleServiceSupport ids) {
if (ObjectHelper.isNotEmpty(ids)) {
@@ -140,102 +148,103 @@ public abstract class SimpleServiceSupport, PROXY extends AbstractProxyEntity> extends QueryParser {
- private final PROXY proxy;
+ private static final class EqQueryParser, PROXY extends AbstractProxyEntity> extends QueryParser {
+ public EqQueryParser(Query.Queryable queryable, PROXY container) {
+ super(queryable, container);
+ }
@Override
- protected void nullEqual(Query.Queryable queryable) {
+ protected void nullEqual(Query.Queryable queryable, PROXY proxy) {
queryable.nullEqual().forEach(column -> proxy.anyColumn(column).isNull());
}
@Override
- protected void notNullEqual(Query.Queryable queryable) {
+ protected void notNullEqual(Query.Queryable queryable, PROXY proxy) {
queryable.notNullEqual().forEach(column -> proxy.anyColumn(column).isNotNull());
}
@Override
- protected void empty(Query.Queryable queryable) {
+ protected void empty(Query.Queryable queryable, PROXY proxy) {
throw new UnsupportedOperationException();
}
@Override
- protected void notEmpty(Query.Queryable queryable) {
+ protected void notEmpty(Query.Queryable queryable, PROXY proxy) {
throw new UnsupportedOperationException();
}
@Override
- protected void equal(Query.Queryable queryable) {
+ protected void equal(Query.Queryable queryable, PROXY proxy) {
queryable.equal().forEach((column, value) -> proxy.anyColumn(column).eq(value));
}
@Override
- protected void notEqual(Query.Queryable queryable) {
+ protected void notEqual(Query.Queryable queryable, PROXY proxy) {
queryable.notEqual().forEach((column, value) -> proxy.anyColumn(column).ne(value));
}
@Override
- protected void like(Query.Queryable queryable) {
+ protected void like(Query.Queryable queryable, PROXY proxy) {
queryable.like().forEach((column, value) -> proxy.anyColumn(column).likeRaw(value));
}
@Override
- protected void notLike(Query.Queryable queryable) {
+ protected void notLike(Query.Queryable queryable, PROXY proxy) {
queryable.notLike().forEach((column, value) -> proxy.anyColumn(column).notLikeRaw(value));
}
@Override
- protected void contain(Query.Queryable queryable) {
+ protected void contain(Query.Queryable queryable, PROXY proxy) {
queryable.contain().forEach((column, value) -> proxy.anyColumn(column).like(value));
}
@Override
- protected void notContain(Query.Queryable queryable) {
+ protected void notContain(Query.Queryable queryable, PROXY proxy) {
queryable.notContain().forEach((column, value) -> proxy.anyColumn(column).notLike(value));
}
@Override
- protected void startWith(Query.Queryable queryable) {
+ protected void startWith(Query.Queryable queryable, PROXY proxy) {
queryable.startWith().forEach((column, value) -> proxy.anyColumn(column).likeMatchLeft(value));
}
@Override
- protected void notStartWith(Query.Queryable queryable) {
+ protected void notStartWith(Query.Queryable queryable, PROXY proxy) {
queryable.notStartWith().forEach((column, value) -> proxy.anyColumn(column).notLikeMatchLeft(value));
}
@Override
- protected void endWith(Query.Queryable queryable) {
+ protected void endWith(Query.Queryable queryable, PROXY proxy) {
queryable.endWith().forEach((column, value) -> proxy.anyColumn(column).likeMatchRight(value));
}
@Override
- protected void notEndWith(Query.Queryable queryable) {
+ protected void notEndWith(Query.Queryable queryable, PROXY proxy) {
queryable.notEndWith().forEach((column, value) -> proxy.anyColumn(column).notLikeMatchRight(value));
}
@Override
- protected void great(Query.Queryable queryable) {
+ protected void great(Query.Queryable queryable, PROXY proxy) {
queryable.great().forEach((column, value) -> proxy.anyColumn(column).gt(value));
}
@Override
- protected void less(Query.Queryable queryable) {
+ protected void less(Query.Queryable queryable, PROXY proxy) {
queryable.less().forEach((column, value) -> proxy.anyColumn(column).lt(value));
}
@Override
- protected void greatEqual(Query.Queryable queryable) {
+ protected void greatEqual(Query.Queryable queryable, PROXY proxy) {
queryable.greatEqual().forEach((column, value) -> proxy.anyColumn(column).ge(value));
}
@Override
- protected void lessEqual(Query.Queryable queryable) {
+ protected void lessEqual(Query.Queryable queryable, PROXY proxy) {
queryable.lessEqual().forEach((column, value) -> proxy.anyColumn(column).le(value));
}
@Override
- protected void inside(Query.Queryable queryable) {
+ protected void inside(Query.Queryable queryable, PROXY proxy) {
queryable.inside()
.entrySet()
.stream()
@@ -244,7 +253,7 @@ public abstract class SimpleServiceSupport1.1.0-SNAPSHOT
- spring-boot-service-template-jpa
+ spring-boot-service-template-database-jpa
com.lanyuanxiaoyao
- spring-boot-service-template-common
+ spring-boot-service-template-database-common
@@ -22,6 +22,7 @@
spring-boot-starter-web
provided
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -40,22 +41,6 @@
hibernate-ant
-
- org.mapstruct
- mapstruct
- compile
-
-
-
- com.github.gavlyukovskiy
- p6spy-spring-boot-starter
-
-
-
- org.jspecify
- jspecify
-
-
com.h2database
h2
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java
similarity index 96%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java
index a000561..e030b06 100644
--- a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java
@@ -1,9 +1,9 @@
package com.lanyuanxiaoyao.service.template.jpa.controller;
-import com.lanyuanxiaoyao.service.template.common.controller.SimpleController;
-import com.lanyuanxiaoyao.service.template.common.entity.GlobalResponse;
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
+import com.lanyuanxiaoyao.service.template.database.common.controller.SimpleController;
+import com.lanyuanxiaoyao.service.template.database.common.entity.GlobalResponse;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
import com.lanyuanxiaoyao.service.template.jpa.entity.SimpleEntity;
import com.lanyuanxiaoyao.service.template.jpa.service.SimpleServiceSupport;
import java.util.function.Function;
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/IdOnlyEntity.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/IdOnlyEntity.java
similarity index 100%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/IdOnlyEntity.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/IdOnlyEntity.java
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SimpleEntity.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SimpleEntity.java
similarity index 100%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SimpleEntity.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SimpleEntity.java
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeId.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeId.java
similarity index 100%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeId.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeId.java
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java
similarity index 87%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java
index af8f71d..b50d820 100644
--- a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java
@@ -1,6 +1,6 @@
package com.lanyuanxiaoyao.service.template.jpa.entity;
-import com.lanyuanxiaoyao.service.template.common.helper.SnowflakeHelper;
+import com.lanyuanxiaoyao.service.template.database.common.helper.SnowflakeHelper;
import java.io.Serializable;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/helper/DatabaseHelper.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/helper/DatabaseHelper.java
similarity index 100%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/helper/DatabaseHelper.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/helper/DatabaseHelper.java
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/repository/SimpleRepository.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/repository/SimpleRepository.java
similarity index 100%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/repository/SimpleRepository.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/repository/SimpleRepository.java
diff --git a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java
similarity index 84%
rename from spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java
rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java
index dfd026e..ab14ccb 100644
--- a/spring-boot-service-template-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java
+++ b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java
@@ -1,14 +1,14 @@
package com.lanyuanxiaoyao.service.template.jpa.service;
-import com.lanyuanxiaoyao.service.template.common.entity.Page;
-import com.lanyuanxiaoyao.service.template.common.entity.Query;
-import com.lanyuanxiaoyao.service.template.common.exception.IdNotFoundException;
-import com.lanyuanxiaoyao.service.template.common.exception.NotCollectionException;
-import com.lanyuanxiaoyao.service.template.common.exception.NotComparableException;
-import com.lanyuanxiaoyao.service.template.common.exception.NotStringException;
import com.lanyuanxiaoyao.service.template.common.helper.ObjectHelper;
-import com.lanyuanxiaoyao.service.template.common.service.QueryParser;
-import com.lanyuanxiaoyao.service.template.common.service.SimpleService;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Page;
+import com.lanyuanxiaoyao.service.template.database.common.entity.Query;
+import com.lanyuanxiaoyao.service.template.database.common.exception.IdNotFoundException;
+import com.lanyuanxiaoyao.service.template.database.common.exception.NotCollectionException;
+import com.lanyuanxiaoyao.service.template.database.common.exception.NotComparableException;
+import com.lanyuanxiaoyao.service.template.database.common.exception.NotStringException;
+import com.lanyuanxiaoyao.service.template.database.common.service.QueryParser;
+import com.lanyuanxiaoyao.service.template.database.common.service.SimpleService;
import com.lanyuanxiaoyao.service.template.jpa.entity.IdOnlyEntity;
import com.lanyuanxiaoyao.service.template.jpa.entity.SimpleEntity;
import com.lanyuanxiaoyao.service.template.jpa.repository.SimpleRepository;
@@ -17,7 +17,6 @@ import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Path;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
-import jakarta.transaction.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
@@ -29,6 +28,7 @@ import lombok.extern.slf4j.Slf4j;
import org.mapstruct.Named;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
+import org.springframework.transaction.annotation.Transactional;
/**
* 简单服务支持类,提供基础的业务逻辑实现
@@ -87,7 +87,7 @@ public abstract class SimpleServiceSupport implemen
* @param entity 需要保存的实体对象
* @return 返回保存后的实体ID
*/
- @Transactional(rollbackOn = Throwable.class)
+ @Transactional(rollbackFor = Throwable.class)
@Override
public Long save(ENTITY entity) {
entity = repository.saveOrUpdateByNotNullProperties(entity);
@@ -103,7 +103,7 @@ public abstract class SimpleServiceSupport implemen
*
* @param entities 需要保存的实体对象集合
*/
- @Transactional(rollbackOn = Throwable.class)
+ @Transactional(rollbackFor = Throwable.class)
@Override
public void save(Iterable entities) {
repository.saveOrUpdateAllByNotNullProperties(entities);
@@ -194,7 +194,11 @@ public abstract class SimpleServiceSupport implemen
var result = repository.findAll(
(root, query, builder) -> {
var predicate = commonPredicates(root, query, builder);
- var queryPredicate = new JpaQueryParser<>(root, query, builder).build(listQuery.query());
+ var predicates = new ArrayList();
+ new JpaQueryParser<>(listQuery.query(), predicates, root, query, builder).build();
+ var queryPredicate = predicates.size() == 1
+ ? predicates.get(0)
+ : builder.and(predicates.toArray(Predicate[]::new));
return ObjectHelper.isNull(predicate)
? queryPredicate
: builder.and(predicate, queryPredicate);
@@ -268,7 +272,7 @@ public abstract class SimpleServiceSupport implemen
*
* @param id 实体主键ID
*/
- @Transactional(rollbackOn = Throwable.class)
+ @Transactional(rollbackFor = Throwable.class)
@Override
public void remove(Long id) {
if (ObjectHelper.isNotNull(id)) {
@@ -286,7 +290,7 @@ public abstract class SimpleServiceSupport implemen
*
* @param ids 实体主键ID集合
*/
- @Transactional(rollbackOn = Throwable.class)
+ @Transactional(rollbackFor = Throwable.class)
@Override
public void remove(Set ids) {
if (ObjectHelper.isNotEmpty(ids)) {
@@ -295,14 +299,14 @@ public abstract class SimpleServiceSupport implemen
}
@SuppressWarnings("unchecked")
- private static final class JpaQueryParser extends QueryParser {
+ private static final class JpaQueryParser extends QueryParser> {
private final Root root;
@SuppressWarnings({"unused", "FieldCanBeLocal"})
private final CriteriaQuery> query;
private final CriteriaBuilder builder;
- private final List predicates = new ArrayList<>();
- private JpaQueryParser(Root root, CriteriaQuery> query, CriteriaBuilder builder) {
+ private JpaQueryParser(Query.Queryable queryable, List predicates, Root root, CriteriaQuery> query, CriteriaBuilder builder) {
+ super(queryable, predicates);
this.root = root;
this.query = query;
this.builder = builder;
@@ -434,17 +438,17 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void nullEqual(Query.Queryable queryable) {
+ protected void nullEqual(Query.Queryable queryable, List predicates) {
queryable.nullEqual().forEach(column -> predicates.add(builder.isNull(column(root, column))));
}
@Override
- protected void notNullEqual(Query.Queryable queryable) {
+ protected void notNullEqual(Query.Queryable queryable, List predicates) {
queryable.notNullEqual().forEach(column -> predicates.add(builder.isNotNull(column(root, column))));
}
@Override
- protected void empty(Query.Queryable queryable) {
+ protected void empty(Query.Queryable queryable, List predicates) {
queryable.empty().forEach(column -> {
var path = this.>column(root, column);
checkCollection(path, column);
@@ -453,7 +457,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notEmpty(Query.Queryable queryable) {
+ protected void notEmpty(Query.Queryable queryable, List predicates) {
queryable.notEmpty().forEach(column -> {
var path = this.>column(root, column);
checkCollection(path, column);
@@ -462,7 +466,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void equal(Query.Queryable queryable) {
+ protected void equal(Query.Queryable queryable, List predicates) {
queryable.equal().forEach((column, value) -> {
var path = column(root, column);
predicates.add(builder.equal(path, value(path, value)));
@@ -470,7 +474,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notEqual(Query.Queryable queryable) {
+ protected void notEqual(Query.Queryable queryable, List predicates) {
queryable.notEqual().forEach((column, value) -> {
var path = column(root, column);
predicates.add(builder.notEqual(path, value(path, value)));
@@ -478,7 +482,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void like(Query.Queryable queryable) {
+ protected void like(Query.Queryable queryable, List predicates) {
queryable.like().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -487,7 +491,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notLike(Query.Queryable queryable) {
+ protected void notLike(Query.Queryable queryable, List predicates) {
queryable.notLike().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -496,7 +500,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void contain(Query.Queryable queryable) {
+ protected void contain(Query.Queryable queryable, List predicates) {
queryable.contain().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -505,7 +509,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notContain(Query.Queryable queryable) {
+ protected void notContain(Query.Queryable queryable, List predicates) {
queryable.notContain().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -514,7 +518,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void startWith(Query.Queryable queryable) {
+ protected void startWith(Query.Queryable queryable, List predicates) {
queryable.startWith().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -523,7 +527,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notStartWith(Query.Queryable queryable) {
+ protected void notStartWith(Query.Queryable queryable, List predicates) {
queryable.notStartWith().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -532,7 +536,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void endWith(Query.Queryable queryable) {
+ protected void endWith(Query.Queryable queryable, List predicates) {
queryable.endWith().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -541,7 +545,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notEndWith(Query.Queryable queryable) {
+ protected void notEndWith(Query.Queryable queryable, List predicates) {
queryable.notEndWith().forEach((column, value) -> {
var path = this.column(root, column);
checkString(path, value, column);
@@ -550,7 +554,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void great(Query.Queryable queryable) {
+ protected void great(Query.Queryable queryable, List predicates) {
queryable.great().forEach((column, value) -> {
var path = this.>column(root, column);
checkComparable(path, value, column);
@@ -559,7 +563,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void less(Query.Queryable queryable) {
+ protected void less(Query.Queryable queryable, List predicates) {
queryable.less().forEach((column, value) -> {
var path = this.>column(root, column);
checkComparable(path, value, column);
@@ -568,7 +572,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void greatEqual(Query.Queryable queryable) {
+ protected void greatEqual(Query.Queryable queryable, List predicates) {
queryable.greatEqual().forEach((column, value) -> {
var path = this.>column(root, column);
checkComparable(path, value, column);
@@ -577,7 +581,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void lessEqual(Query.Queryable queryable) {
+ protected void lessEqual(Query.Queryable queryable, List predicates) {
queryable.lessEqual().forEach((column, value) -> {
var path = this.>column(root, column);
checkComparable(path, value, column);
@@ -586,7 +590,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void inside(Query.Queryable queryable) {
+ protected void inside(Query.Queryable queryable, List predicates) {
queryable.inside()
.entrySet()
.stream()
@@ -595,7 +599,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notInside(Query.Queryable queryable) {
+ protected void notInside(Query.Queryable queryable, List predicates) {
queryable.notInside()
.entrySet()
.stream()
@@ -604,7 +608,7 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void between(Query.Queryable queryable) {
+ protected void between(Query.Queryable queryable, List predicates) {
queryable.between().forEach((column, value) -> {
var path = this.>column(root, column);
checkComparable(path, value, column);
@@ -613,19 +617,12 @@ public abstract class SimpleServiceSupport implemen
}
@Override
- protected void notBetween(Query.Queryable queryable) {
+ protected void notBetween(Query.Queryable queryable, List predicates) {
queryable.notBetween().forEach((column, value) -> {
var path = this.>column(root, column);
checkComparable(path, value, column);
predicates.add(builder.between(path, (Comparable