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 +