From c9494d8f45d1f9e147fc29470eaafa1b58a1d1e3 Mon Sep 17 00:00:00 2001
From: Dftre <3066417822@qq.com>
Date: Tue, 28 May 2024 03:59:00 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=A6=BBmybatis-plus=EF=BC=8C?=
=?UTF-8?q?=E5=AE=9E=E7=8E=B0QueryWrapperUtil=EF=BC=8C=E6=B3=A8=E6=84=8F?=
=?UTF-8?q?=E8=AF=A5=E7=B1=BB=E8=BF=98=E9=9C=80=E8=A6=81=E6=9B=B4=E5=A4=9A?=
=?UTF-8?q?=E7=9A=84=E6=B5=8B=E8=AF=95=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 14 --
ruoyi-common/pom.xml | 6 -
ruoyi-framework/pom.xml | 5 +
ruoyi-plugins/pom.xml | 33 ++--
ruoyi-plugins/ruoyi-mybatis-jpa/pom.xml | 9 +-
.../ruoyi/mybatis/domain/BaseColumnInfo.java | 8 +
.../ruoyi/mybatis/utils/QueryWrapperUtil.java | 141 ++++++++++--------
ruoyi-plugins/ruoyi-mybatis-plus/pom.xml | 33 ++++
.../config/MybatisPlusConfig.java | 9 +-
ruoyi-plugins/ruoyi-plugins-starter/pom.xml | 6 +
10 files changed, 167 insertions(+), 97 deletions(-)
create mode 100644 ruoyi-plugins/ruoyi-mybatis-plus/pom.xml
rename {ruoyi-framework/src/main/java/com/ruoyi/framework => ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus}/config/MybatisPlusConfig.java (98%)
diff --git a/pom.xml b/pom.xml
index ef5885b..5082a34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,6 @@
0.9.1
4.5.0
3.0.3
- 3.5.5
8.2.0
2.3.1
4.0.5
@@ -65,19 +64,6 @@
${mybatis-spring-boot.version}
-
-
- com.baomidou
- mybatis-plus-boot-starter
-
-
- org.mybatis
- mybatis-spring
-
-
- ${mybatis-plus-boot-starter.version}
-
-
javax.xml.bind
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 364b2d1..5fda4b9 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -139,12 +139,6 @@
mybatis-spring-boot-starter
-
-
- com.baomidou
- mybatis-plus-boot-starter
-
-
org.springdoc
springdoc-openapi-starter-webmvc-ui
diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml
index b4d9858..5c21cdb 100644
--- a/ruoyi-framework/pom.xml
+++ b/ruoyi-framework/pom.xml
@@ -69,6 +69,11 @@
ruoyi-system
+
+ com.ruoyi
+ ruoyi-plugins-starter
+
+
diff --git a/ruoyi-plugins/pom.xml b/ruoyi-plugins/pom.xml
index 0c35280..4984dc4 100644
--- a/ruoyi-plugins/pom.xml
+++ b/ruoyi-plugins/pom.xml
@@ -13,6 +13,7 @@
3.8.7.3.4
3.10.8
+ 3.5.5
@@ -27,27 +28,40 @@
${ehcache.version}
-
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+
+
+ org.mybatis
+ mybatis-spring
+
+
+ ${mybatis-plus-boot-starter.version}
+
+
+
com.ruoyi
ruoyi-ehcache
${ruoyi.version}
-
-
- com.ruoyi
- ruoyi-ehcache
- ${ruoyi.version}
-
-
-
+
com.ruoyi
ruoyi-mybatis-jpa
${ruoyi.version}
+
+
+ com.ruoyi
+ ruoyi-mybatis-plus
+ ${ruoyi.version}
+
+
com.ruoyi
@@ -68,6 +82,7 @@
ruoyi-ehcache
ruoyi-mybatis-jpa
+ ruoyi-mybatis-plus
ruoyi-websocket
ruoyi-plugins-starter
diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/pom.xml b/ruoyi-plugins/ruoyi-mybatis-jpa/pom.xml
index cd9033c..75eac7f 100644
--- a/ruoyi-plugins/ruoyi-mybatis-jpa/pom.xml
+++ b/ruoyi-plugins/ruoyi-mybatis-jpa/pom.xml
@@ -11,7 +11,7 @@
ruoyi-mybatis-jpa
- ruoyi-mybatis-plus模块
+ ruoyi-mybatis-jpa
@@ -22,6 +22,13 @@
ruoyi-common
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ true
+
+
diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/BaseColumnInfo.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/BaseColumnInfo.java
index af8ff79..4335d08 100644
--- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/BaseColumnInfo.java
+++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/domain/BaseColumnInfo.java
@@ -12,6 +12,14 @@ public class BaseColumnInfo {
protected Query query;
protected String querySql;
+ public Field getField() {
+ return field;
+ }
+
+ public Query getQuery() {
+ return query;
+ }
+
public String getTemplate() {
return getTemplate(false);
}
diff --git a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/QueryWrapperUtil.java b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/QueryWrapperUtil.java
index 4a10d17..f3c395c 100644
--- a/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/QueryWrapperUtil.java
+++ b/ruoyi-plugins/ruoyi-mybatis-jpa/src/main/java/com/ruoyi/mybatis/utils/QueryWrapperUtil.java
@@ -1,69 +1,84 @@
-// package com.ruoyi.mybatis.utils;
+package com.ruoyi.mybatis.utils;
-// import java.util.Arrays;
-// import java.util.Map;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
-// import org.springframework.core.annotation.AnnotationUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.mybatis.annotation.Query;
+import com.ruoyi.mybatis.domain.TableInfo;
-// import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-// import com.ruoyi.common.core.domain.BaseEntity;
-// import com.ruoyi.mybatis.annotation.Query;
+public class QueryWrapperUtil {
+ public static List getArrayFromParam(Object obj) {
+ List list = new ArrayList<>();
+ if (obj instanceof String) {
+ for (String split : ((String) obj).split(",")) {
+ list.add(split);
+ }
+ } else if (obj instanceof Collection) {
+ for (Object split : ((Collection>) obj)) {
+ list.add(split.toString());
+ }
+ }
+ return list;
+ }
-// public class QueryWrapperUtil {
-// public static QueryWrapper initQueryWrapper(T entity) {
-// QueryWrapper queryWrapper = new QueryWrapper<>();
+ public static QueryWrapper initQueryWrapper(T entity) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ TableInfo tableInfo = TableContainer.getTableInfo(entity);
+ Map params = entity.getParams();
-// Class> clazz = entity.getClass();
-// Map params = entity.getParams();
-// Arrays.stream(clazz.getDeclaredFields())
-// .filter(field -> AnnotationUtils.findAnnotation(field, Query.class) != null)
-// .forEach(field -> {
-// field.setAccessible(true);
-// Query queryAnnotation = field.getAnnotation(Query.class);
+ tableInfo.getNotNullColumnsForQuery(entity).stream()
+ .forEach(field -> {
+ Object fieldValue = null;
+ try {
+ fieldValue = field.getField().get(entity);
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ Query queryAnnotation = field.getQuery();
+ switch (queryAnnotation.operation()) {
+ case eq -> queryWrapper.eq(field.getUnqualifiedColumnName(), fieldValue);
+ case ne -> queryWrapper.ne(field.getUnqualifiedColumnName(), fieldValue);
+ case gt -> queryWrapper.gt(field.getUnqualifiedColumnName(), fieldValue);
+ case ge -> queryWrapper.ge(field.getUnqualifiedColumnName(), fieldValue);
+ case le -> queryWrapper.le(field.getUnqualifiedColumnName(), fieldValue);
+ case lt -> queryWrapper.lt(field.getUnqualifiedColumnName(), fieldValue);
+ case between -> {
+ String begin = queryAnnotation.sections()[0];
+ String end = queryAnnotation.sections()[1];
+ queryWrapper.between(field.getUnqualifiedColumnName(), params.get(begin), params.get(end));
+ }
+ case notBetween -> {
+ String begin = queryAnnotation.sections()[0];
+ String end = queryAnnotation.sections()[1];
+ queryWrapper.notBetween(field.getUnqualifiedColumnName(), params.get(begin),
+ params.get(end));
+ }
+ case like -> queryWrapper.like(field.getUnqualifiedColumnName(), fieldValue);
+ case notLike -> queryWrapper.notLike(field.getUnqualifiedColumnName(), fieldValue);
+ case likeLeft -> queryWrapper.likeLeft(field.getUnqualifiedColumnName(), fieldValue);
+ case likeRight -> queryWrapper.likeRight(field.getUnqualifiedColumnName(), fieldValue);
+ case notLikeLeft -> queryWrapper.notLikeLeft(field.getUnqualifiedColumnName(), fieldValue);
+ case notLikeRight -> queryWrapper.notLikeRight(field.getUnqualifiedColumnName(), fieldValue);
+ case isNull -> queryWrapper.isNull(field.getUnqualifiedColumnName());
+ case isNotNull -> queryWrapper.isNotNull(field.getUnqualifiedColumnName());
+ case in -> queryWrapper.in(field.getUnqualifiedColumnName(),
+ getArrayFromParam(params.get(queryAnnotation.section())));
+ case notIn -> queryWrapper.notIn(field.getUnqualifiedColumnName(),
+ getArrayFromParam(params.get(queryAnnotation.section())));
+ case inSql -> queryWrapper.inSql(field.getUnqualifiedColumnName(), queryAnnotation.sql());
+ case notInSql -> queryWrapper.notInSql(field.getUnqualifiedColumnName(), queryAnnotation.sql());
+ default ->
+ throw new IllegalArgumentException(
+ "Unsupported operation: " + queryAnnotation.operation());
+ }
+ });
-// try {
-// Object fieldValue = field.get(entity);
-// if (fieldValue != null) { // 判断属性值是否非空
-// switch (queryAnnotation.operation()) {
-// case eq -> queryWrapper.eq(queryAnnotation.column(), fieldValue);
-// case ne -> queryWrapper.ne(queryAnnotation.column(), fieldValue);
-// case gt -> queryWrapper.gt(queryAnnotation.column(), fieldValue);
-// case ge -> queryWrapper.ge(queryAnnotation.column(), fieldValue);
-// case le -> queryWrapper.le(queryAnnotation.column(), fieldValue);
-// case lt -> queryWrapper.lt(queryAnnotation.column(), fieldValue);
-// case between -> {
-// String begin = queryAnnotation.section()[0];
-// String end = queryAnnotation.section()[1];
-// queryWrapper.between(queryAnnotation.column(), params.get(begin), params.get(end));
-// }
-// case notBetween -> {
-// String begin = queryAnnotation.section()[0];
-// String end = queryAnnotation.section()[1];
-// queryWrapper.notBetween(queryAnnotation.column(), params.get(begin),
-// params.get(end));
-// }
-// case like -> queryWrapper.like(queryAnnotation.column(), fieldValue);
-// case notLike -> queryWrapper.notLike(queryAnnotation.column(), fieldValue);
-// case likeLeft -> queryWrapper.likeLeft(queryAnnotation.column(), fieldValue);
-// case likeRight -> queryWrapper.likeRight(queryAnnotation.column(), fieldValue);
-// case notLikeLeft -> queryWrapper.notLikeLeft(queryAnnotation.column(), fieldValue);
-// case notLikeRight -> queryWrapper.notLikeRight(queryAnnotation.column(), fieldValue);
-// case isNull -> queryWrapper.isNull(queryAnnotation.column());
-// case isNotNull -> queryWrapper.isNotNull(queryAnnotation.column());
-// case in -> queryWrapper.in(queryAnnotation.column(), (Object[]) fieldValue);
-// case notIn -> queryWrapper.notIn(queryAnnotation.column(), (Object[]) fieldValue);
-// case inSql -> queryWrapper.inSql(queryAnnotation.column(), queryAnnotation.sql());
-// case notInSql -> queryWrapper.notInSql(queryAnnotation.column(), queryAnnotation.sql());
-// default ->
-// throw new IllegalArgumentException(
-// "Unsupported operation: " + queryAnnotation.operation());
-// }
-// }
-// } catch (IllegalAccessException e) {
-// throw new RuntimeException("Failed to access field for building query conditions.", e);
-// }
-// });
-
-// return queryWrapper;
-// }
-// }
+ return queryWrapper;
+ }
+}
diff --git a/ruoyi-plugins/ruoyi-mybatis-plus/pom.xml b/ruoyi-plugins/ruoyi-mybatis-plus/pom.xml
new file mode 100644
index 0000000..e835749
--- /dev/null
+++ b/ruoyi-plugins/ruoyi-mybatis-plus/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ ruoyi-plugins
+ com.ruoyi
+ 3.8.7.3.4
+
+ 4.0.0
+
+ ruoyi-mybatis-plus
+
+
+ ruoyi-mybatis-plus模块
+
+
+
+
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+
+
+
+
+
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java
similarity index 98%
rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
rename to ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java
index 62d5c20..039d481 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
+++ b/ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java
@@ -1,13 +1,14 @@
-package com.ruoyi.framework.config;
+package com.ruoyi.mybatisplus.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Mybatis Plus 配置
diff --git a/ruoyi-plugins/ruoyi-plugins-starter/pom.xml b/ruoyi-plugins/ruoyi-plugins-starter/pom.xml
index 8f12f0e..74d1b3c 100644
--- a/ruoyi-plugins/ruoyi-plugins-starter/pom.xml
+++ b/ruoyi-plugins/ruoyi-plugins-starter/pom.xml
@@ -39,6 +39,12 @@
com.ruoyi
ruoyi-mybatis-jpa
+
+
+
+ com.ruoyi
+ ruoyi-mybatis-plus
+