From e6a48d8e888fab6571084c9d9c02a6e27fe89d4b Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Wed, 21 Jan 2026 10:33:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(all):=20=E8=B0=83=E6=95=B4=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=BE=9D=E8=B5=96=EF=BC=8C=E5=88=92=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 61 +++++---- .../template/common/service/QueryParser.java | 125 ----------------- .../pom.xml | 31 +++++ .../common/controller/QueryController.java | 6 +- .../common/controller/RemoveController.java | 4 +- .../common/controller/SaveController.java | 4 +- .../common/controller/SimpleController.java | 2 +- .../common/entity/GlobalResponse.java | 2 +- .../database}/common/entity/Page.java | 2 +- .../database}/common/entity/Query.java | 2 +- .../common/exception/IdNotFoundException.java | 2 +- .../exception/NotCollectionException.java | 2 +- .../exception/NotComparableException.java | 2 +- .../common/exception/NotStringException.java | 2 +- .../common/helper/SnowflakeHelper.java | 2 +- .../database/common/service/QueryParser.java | 128 ++++++++++++++++++ .../common/service/QueryService.java | 6 +- .../common/service/RemoveService.java | 2 +- .../database}/common/service/SaveService.java | 2 +- .../common/service/SimpleService.java | 2 +- .../pom.xml | 19 +-- .../controller/SimpleControllerSupport.java | 6 +- .../template/eq/entity/IdOnlyEntity.java | 0 .../template/eq/entity/SimpleEntity.java | 0 .../eq/entity/SnowflakeIdGenerator.java | 2 +- .../eq/service/SimpleServiceSupport.java | 76 ++++++----- .../src/test/initial.sql | 0 .../service/template/eq/TestApplication.java | 0 .../eq/controller/CompanyController.java | 0 .../service/template/eq/entity/Company.java | 0 .../service/template/eq/entity/Employee.java | 0 .../template/eq/service/CompanyService.java | 0 .../template/eq/service/EmployeeService.java | 0 .../src/test/resources/application.yml | 2 +- .../pom.xml | 21 +-- .../controller/SimpleControllerSupport.java | 6 +- .../template/jpa/entity/IdOnlyEntity.java | 0 .../template/jpa/entity/SimpleEntity.java | 0 .../template/jpa/entity/SnowflakeId.java | 0 .../jpa/entity/SnowflakeIdGenerator.java | 2 +- .../template/jpa/helper/DatabaseHelper.java | 0 .../jpa/repository/SimpleRepository.java | 0 .../jpa/service/SimpleServiceSupport.java | 89 ++++++------ .../service/template/jpa/HelperTest.java | 0 .../service/template/jpa/TestApplication.java | 0 .../jpa/controller/CompanyController.java | 0 .../jpa/controller/EmployeeController.java | 0 .../jpa/controller/ReportController.java | 0 .../service/template/jpa/entity/Company.java | 0 .../service/template/jpa/entity/Employee.java | 0 .../service/template/jpa/entity/Report.java | 0 .../entity/vo/EmployeeWithCompanyName.java | 0 .../jpa/repository/CompanyRepository.java | 0 .../jpa/repository/EmployeeRepository.java | 0 .../jpa/repository/ReportRepository.java | 0 .../template/jpa/service/CompanyService.java | 0 .../template/jpa/service/EmployeeService.java | 0 .../template/jpa/service/ReportService.java | 0 .../src/test/resources/application.yml | 0 .../pom.xml | 21 +-- .../configuration/MybatisConfiguration.java | 0 .../controller/SimpleControllerSupport.java | 6 +- .../template/xbatis/entity/IdOnlyEntity.java | 0 .../template/xbatis/entity/SimpleEntity.java | 0 .../xbatis/entity/SnowflakeIdGenerator.java | 2 +- .../xbatis/mapper/MybatisBasicMapper.java | 0 .../xbatis/service/SimpleServiceSupport.java | 76 ++++++----- .../src/test/initial.sql | 0 .../template/xbatis/TestApplication.java | 0 .../xbatis/controller/CompanyController.java | 0 .../template/xbatis/entity/Company.java | 0 .../template/xbatis/entity/Employee.java | 0 .../xbatis/service/CompanyService.java | 0 .../xbatis/service/EmployeeService.java | 0 .../src/test/resources/application.yml | 2 +- 75 files changed, 365 insertions(+), 354 deletions(-) delete mode 100644 spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template/common/service/QueryParser.java create mode 100644 spring-boot-service-template-database/spring-boot-service-template-database-common/pom.xml rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/controller/QueryController.java (91%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/controller/RemoveController.java (83%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/controller/SaveController.java (85%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/controller/SimpleController.java (69%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/entity/GlobalResponse.java (99%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/entity/Page.java (92%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/entity/Query.java (99%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/exception/IdNotFoundException.java (69%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/exception/NotCollectionException.java (71%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/exception/NotComparableException.java (71%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/exception/NotStringException.java (70%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/helper/SnowflakeHelper.java (95%) create mode 100644 spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database/common/service/QueryParser.java rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/service/QueryService.java (92%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/service/RemoveService.java (93%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/service/SaveService.java (94%) rename {spring-boot-service-template-common/src/main/java/com/lanyuanxiaoyao/service/template => spring-boot-service-template-database/spring-boot-service-template-database-common/src/main/java/com/lanyuanxiaoyao/service/template/database}/common/service/SimpleService.java (62%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/pom.xml (80%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/main/java/com/lanyuanxiaoyao/service/template/eq/controller/SimpleControllerSupport.java (96%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/IdOnlyEntity.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SimpleEntity.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/main/java/com/lanyuanxiaoyao/service/template/eq/entity/SnowflakeIdGenerator.java (82%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/main/java/com/lanyuanxiaoyao/service/template/eq/service/SimpleServiceSupport.java (73%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/initial.sql (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/java/com/lanyuanxiaoyao/service/template/eq/TestApplication.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/java/com/lanyuanxiaoyao/service/template/eq/controller/CompanyController.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/java/com/lanyuanxiaoyao/service/template/eq/entity/Company.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/java/com/lanyuanxiaoyao/service/template/eq/entity/Employee.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/java/com/lanyuanxiaoyao/service/template/eq/service/CompanyService.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/java/com/lanyuanxiaoyao/service/template/eq/service/EmployeeService.java (100%) rename {spring-boot-service-template-eq => spring-boot-service-template-database/spring-boot-service-template-database-eq}/src/test/resources/application.yml (88%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/pom.xml (85%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/controller/SimpleControllerSupport.java (96%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/IdOnlyEntity.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SimpleEntity.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeId.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/entity/SnowflakeIdGenerator.java (87%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/helper/DatabaseHelper.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/repository/SimpleRepository.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/main/java/com/lanyuanxiaoyao/service/template/jpa/service/SimpleServiceSupport.java (84%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/HelperTest.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/TestApplication.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/CompanyController.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/EmployeeController.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/ReportController.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Company.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Employee.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Report.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/vo/EmployeeWithCompanyName.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/CompanyRepository.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/EmployeeRepository.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/ReportRepository.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/CompanyService.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/EmployeeService.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/ReportService.java (100%) rename {spring-boot-service-template-jpa => spring-boot-service-template-database/spring-boot-service-template-database-jpa}/src/test/resources/application.yml (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/pom.xml (77%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/configuration/MybatisConfiguration.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java (96%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/IdOnlyEntity.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SimpleEntity.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java (75%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/mapper/MybatisBasicMapper.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java (71%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/initial.sql (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/TestApplication.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/controller/CompanyController.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Company.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Employee.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/CompanyService.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/EmployeeService.java (100%) rename {spring-boot-service-template-xbatis => spring-boot-service-template-database/spring-boot-service-template-database-xbatis}/src/test/resources/application.yml (86%) 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) value(path, value.start()), (Comparable) value(path, value.end())).not()); }); } - - @Override - protected Predicate build() { - return predicates.size() == 1 - ? predicates.get(0) - : builder.and(predicates.toArray(Predicate[]::new)); - } } } \ No newline at end of file diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/HelperTest.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/HelperTest.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/HelperTest.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/HelperTest.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/TestApplication.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/TestApplication.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/TestApplication.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/TestApplication.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/CompanyController.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/CompanyController.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/CompanyController.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/CompanyController.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/EmployeeController.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/EmployeeController.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/EmployeeController.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/EmployeeController.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/ReportController.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/ReportController.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/ReportController.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/controller/ReportController.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Company.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Company.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Company.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Company.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Employee.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Employee.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Employee.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Employee.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Report.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Report.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Report.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/Report.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/vo/EmployeeWithCompanyName.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/vo/EmployeeWithCompanyName.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/vo/EmployeeWithCompanyName.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/entity/vo/EmployeeWithCompanyName.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/CompanyRepository.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/CompanyRepository.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/CompanyRepository.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/CompanyRepository.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/EmployeeRepository.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/EmployeeRepository.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/EmployeeRepository.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/EmployeeRepository.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/ReportRepository.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/ReportRepository.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/ReportRepository.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/repository/ReportRepository.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/CompanyService.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/CompanyService.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/CompanyService.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/CompanyService.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/EmployeeService.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/EmployeeService.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/EmployeeService.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/EmployeeService.java diff --git a/spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/ReportService.java b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/ReportService.java similarity index 100% rename from spring-boot-service-template-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/ReportService.java rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/java/com/lanyuanxiaoyao/service/template/jpa/service/ReportService.java diff --git a/spring-boot-service-template-jpa/src/test/resources/application.yml b/spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/resources/application.yml similarity index 100% rename from spring-boot-service-template-jpa/src/test/resources/application.yml rename to spring-boot-service-template-database/spring-boot-service-template-database-jpa/src/test/resources/application.yml diff --git a/spring-boot-service-template-xbatis/pom.xml b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/pom.xml similarity index 77% rename from spring-boot-service-template-xbatis/pom.xml rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/pom.xml index 8d6bd72..63cb516 100644 --- a/spring-boot-service-template-xbatis/pom.xml +++ b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/pom.xml @@ -9,12 +9,12 @@ 1.1.0-SNAPSHOT - spring-boot-service-template-xbatis + spring-boot-service-template-database-xbatis com.lanyuanxiaoyao - spring-boot-service-template-common + spring-boot-service-template-database-common @@ -22,27 +22,12 @@ spring-boot-starter-web provided + cn.xbatis xbatis-spring-boot-starter - - com.github.gavlyukovskiy - p6spy-spring-boot-starter - - - - org.mapstruct - mapstruct - compile - - - - org.jspecify - jspecify - - com.h2database h2 diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/configuration/MybatisConfiguration.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/configuration/MybatisConfiguration.java similarity index 100% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/configuration/MybatisConfiguration.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/configuration/MybatisConfiguration.java diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java similarity index 96% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java index ce8bc66..5b4e81b 100644 --- a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java +++ b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/controller/SimpleControllerSupport.java @@ -1,9 +1,9 @@ package com.lanyuanxiaoyao.service.template.xbatis.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.xbatis.entity.SimpleEntity; import com.lanyuanxiaoyao.service.template.xbatis.service.SimpleServiceSupport; import java.util.function.Function; diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/IdOnlyEntity.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/IdOnlyEntity.java similarity index 100% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/IdOnlyEntity.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/IdOnlyEntity.java diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SimpleEntity.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SimpleEntity.java similarity index 100% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SimpleEntity.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SimpleEntity.java diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java similarity index 75% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java index d1dcfd8..2824536 100644 --- a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java +++ b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/entity/SnowflakeIdGenerator.java @@ -1,7 +1,7 @@ package com.lanyuanxiaoyao.service.template.xbatis.entity; import cn.xbatis.core.incrementer.Generator; -import com.lanyuanxiaoyao.service.template.common.helper.SnowflakeHelper; +import com.lanyuanxiaoyao.service.template.database.common.helper.SnowflakeHelper; public class SnowflakeIdGenerator implements Generator { @Override diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/mapper/MybatisBasicMapper.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/mapper/MybatisBasicMapper.java similarity index 100% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/mapper/MybatisBasicMapper.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/mapper/MybatisBasicMapper.java diff --git a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java similarity index 71% rename from spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java index ec04869..21d7417 100644 --- a/spring-boot-service-template-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java +++ b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/main/java/com/lanyuanxiaoyao/service/template/xbatis/service/SimpleServiceSupport.java @@ -3,12 +3,12 @@ package com.lanyuanxiaoyao.service.template.xbatis.service; import cn.xbatis.core.mybatis.mapper.context.Pager; import cn.xbatis.core.sql.MybatisCmdFactory; import cn.xbatis.core.sql.executor.chain.QueryChain; -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.xbatis.entity.SimpleEntity; import com.lanyuanxiaoyao.service.template.xbatis.mapper.MybatisBasicMapper; import db.sql.api.cmd.LikeMode; @@ -18,6 +18,8 @@ import java.util.List; import java.util.Optional; import java.util.Set; import lombok.extern.slf4j.Slf4j; +import org.mapstruct.Named; +import org.springframework.transaction.annotation.Transactional; @Slf4j public abstract class SimpleServiceSupport implements SimpleService { @@ -32,11 +34,13 @@ public abstract class SimpleServiceSupport implemen this.mapper = mapper; } + @Transactional(rollbackFor = Throwable.class) @Override public Long save(ENTITY entity) { return (long) mapper.save(entity); } + @Transactional(rollbackFor = Throwable.class) @Override public void save(Iterable entities) { mapper.save(entities); @@ -79,7 +83,7 @@ public abstract class SimpleServiceSupport implemen var where = chain.where(); commonPredicates(where); - new XBatisQueryParser<>(target, factory, where).build(query.query()); + new XBatisQueryParser<>(query.query(), where, target, factory).build(); return new Page<>(chain.list(), chain.count()); } @@ -91,129 +95,132 @@ public abstract class SimpleServiceSupport implemen return Optional.ofNullable(mapper.getById(target, id)); } + @Named("detail") @Override public ENTITY detail(Long id) { return detailOptional(id).orElse(null); } + @Named("detailOrThrow") @Override public ENTITY detailOrThrow(Long id) { return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id)); } + @Transactional(rollbackFor = Throwable.class) @Override public void remove(Long id) { mapper.deleteById(target, id); } + @Transactional(rollbackFor = Throwable.class) @Override public void remove(Set ids) { mapper.deleteByIds(target, ids); } - private static final class XBatisQueryParser extends QueryParser { + private static final class XBatisQueryParser extends QueryParser { private final Class target; private final MybatisCmdFactory factory; - private final Where where; - private XBatisQueryParser(Class target, MybatisCmdFactory factory, Where where) { + private XBatisQueryParser(Query.Queryable queryable, Where where, Class target, MybatisCmdFactory factory) { + super(queryable, where); this.target = target; this.factory = factory; - this.where = where; } @Override - protected void nullEqual(Query.Queryable queryable) { + protected void nullEqual(Query.Queryable queryable, Where where) { queryable.nullEqual().forEach(column -> where.isNull(factory.field(target, column))); } @Override - protected void notNullEqual(Query.Queryable queryable) { + protected void notNullEqual(Query.Queryable queryable, Where where) { queryable.notNullEqual().forEach(column -> where.isNotNull(factory.field(target, column))); } @Override - protected void empty(Query.Queryable queryable) { + protected void empty(Query.Queryable queryable, Where where) { throw new UnsupportedOperationException(); } @Override - protected void notEmpty(Query.Queryable queryable) { + protected void notEmpty(Query.Queryable queryable, Where where) { throw new UnsupportedOperationException(); } @Override - protected void equal(Query.Queryable queryable) { + protected void equal(Query.Queryable queryable, Where where) { queryable.equal().forEach((column, value) -> where.eq(factory.field(target, column), value)); } @Override - protected void notEqual(Query.Queryable queryable) { + protected void notEqual(Query.Queryable queryable, Where where) { queryable.notEqual().forEach((column, value) -> where.ne(factory.field(target, column), value)); } @Override - protected void like(Query.Queryable queryable) { + protected void like(Query.Queryable queryable, Where where) { queryable.like().forEach((column, value) -> where.like(LikeMode.NONE, factory.field(target, column), value)); } @Override - protected void notLike(Query.Queryable queryable) { + protected void notLike(Query.Queryable queryable, Where where) { queryable.notLike().forEach((column, value) -> where.notLike(LikeMode.NONE, factory.field(target, column), value)); } @Override - protected void contain(Query.Queryable queryable) { + protected void contain(Query.Queryable queryable, Where where) { queryable.contain().forEach((column, value) -> where.like(factory.field(target, column), value)); } @Override - protected void notContain(Query.Queryable queryable) { + protected void notContain(Query.Queryable queryable, Where where) { queryable.notContain().forEach((column, value) -> where.notLike(factory.field(target, column), value)); } @Override - protected void startWith(Query.Queryable queryable) { + protected void startWith(Query.Queryable queryable, Where where) { queryable.startWith().forEach((column, value) -> where.like(LikeMode.LEFT, factory.field(target, column), value)); } @Override - protected void notStartWith(Query.Queryable queryable) { + protected void notStartWith(Query.Queryable queryable, Where where) { queryable.notStartWith().forEach((column, value) -> where.notLike(LikeMode.LEFT, factory.field(target, column), value)); } @Override - protected void endWith(Query.Queryable queryable) { + protected void endWith(Query.Queryable queryable, Where where) { queryable.endWith().forEach((column, value) -> where.like(LikeMode.RIGHT, factory.field(target, column), value)); } @Override - protected void notEndWith(Query.Queryable queryable) { + protected void notEndWith(Query.Queryable queryable, Where where) { queryable.notEndWith().forEach((column, value) -> where.notLike(LikeMode.RIGHT, factory.field(target, column), value)); } @Override - protected void great(Query.Queryable queryable) { + protected void great(Query.Queryable queryable, Where where) { queryable.great().forEach((column, value) -> where.gt(factory.field(target, column), value)); } @Override - protected void less(Query.Queryable queryable) { + protected void less(Query.Queryable queryable, Where where) { queryable.less().forEach((column, value) -> where.lt(factory.field(target, column), value)); } @Override - protected void greatEqual(Query.Queryable queryable) { + protected void greatEqual(Query.Queryable queryable, Where where) { queryable.greatEqual().forEach((column, value) -> where.gte(factory.field(target, column), value)); } @Override - protected void lessEqual(Query.Queryable queryable) { + protected void lessEqual(Query.Queryable queryable, Where where) { queryable.lessEqual().forEach((column, value) -> where.lte(factory.field(target, column), value)); } @Override - protected void inside(Query.Queryable queryable) { + protected void inside(Query.Queryable queryable, Where where) { queryable.inside() .entrySet() .stream() @@ -222,7 +229,7 @@ public abstract class SimpleServiceSupport implemen } @Override - protected void notInside(Query.Queryable queryable) { + protected void notInside(Query.Queryable queryable, Where where) { queryable.notInside() .entrySet() .stream() @@ -231,18 +238,13 @@ public abstract class SimpleServiceSupport implemen } @Override - protected void between(Query.Queryable queryable) { + protected void between(Query.Queryable queryable, Where where) { queryable.between().forEach((column, value) -> where.between(factory.field(target, column), value.start(), value.end())); } @Override - protected void notBetween(Query.Queryable queryable) { + protected void notBetween(Query.Queryable queryable, Where where) { queryable.notBetween().forEach((column, value) -> where.notBetween(factory.field(target, column), value.start(), value.end())); } - - @Override - protected Void build() { - return null; - } } } diff --git a/spring-boot-service-template-xbatis/src/test/initial.sql b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/initial.sql similarity index 100% rename from spring-boot-service-template-xbatis/src/test/initial.sql rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/initial.sql diff --git a/spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/TestApplication.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/TestApplication.java similarity index 100% rename from spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/TestApplication.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/TestApplication.java diff --git a/spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/controller/CompanyController.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/controller/CompanyController.java similarity index 100% rename from spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/controller/CompanyController.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/controller/CompanyController.java diff --git a/spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Company.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Company.java similarity index 100% rename from spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Company.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Company.java diff --git a/spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Employee.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Employee.java similarity index 100% rename from spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Employee.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/entity/Employee.java diff --git a/spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/CompanyService.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/CompanyService.java similarity index 100% rename from spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/CompanyService.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/CompanyService.java diff --git a/spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/EmployeeService.java b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/EmployeeService.java similarity index 100% rename from spring-boot-service-template-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/EmployeeService.java rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/java/com/lanyuanxiaoyao/service/template/xbatis/service/EmployeeService.java diff --git a/spring-boot-service-template-xbatis/src/test/resources/application.yml b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/resources/application.yml similarity index 86% rename from spring-boot-service-template-xbatis/src/test/resources/application.yml rename to spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/resources/application.yml index d7274fe..4d6a0de 100644 --- a/spring-boot-service-template-xbatis/src/test/resources/application.yml +++ b/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/resources/application.yml @@ -4,7 +4,7 @@ spring: application: name: Test datasource: - url: "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL;DATABASE_TO_LOWER=TRUE;INIT=runscript from '/Users/lanyuanxiaoyao/Project/IdeaProjects/spring-boot-service-template/spring-boot-service-template-xbatis/src/test/initial.sql'" + url: "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL;DATABASE_TO_LOWER=TRUE;INIT=runscript from '/Users/lanyuanxiaoyao/Project/IdeaProjects/spring-boot-service-template/spring-boot-service-template-database/spring-boot-service-template-database-xbatis/src/test/initial.sql'" username: test password: test driver-class-name: org.h2.Driver