From 116712ec36f484afa4a16c885327966340b7f2de Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Tue, 10 Oct 2023 14:57:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=92=8C=E6=8E=92=E5=BA=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/core/util/QueryWrapperUtils.java | 83 +++++++++++++++++++ .../mybatis/core/vo/ConditionVo.java | 35 ++++++++ .../framework/mybatis/core/vo/FilterVo.java | 21 +++++ 3 files changed, 139 insertions(+) create mode 100644 win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java create mode 100644 win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java create mode 100644 win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java new file mode 100644 index 00000000..5af2c0b5 --- /dev/null +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/util/QueryWrapperUtils.java @@ -0,0 +1,83 @@ +package com.win.framework.mybatis.core.util; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.common.base.CaseFormat; +import com.win.framework.mybatis.core.vo.ConditionVo; +import com.win.framework.mybatis.core.vo.FilterVo; + +/** + * QueryWrapper工具类 + */ +public class QueryWrapperUtils { + + /** + * 根据参数动态组装QueryWrapper + * @param conditionVo filters {column: "userName", action: "==", value: "wenyin"} sorting userName DESC + * @param + * @return + */ + public static QueryWrapper structure(ConditionVo conditionVo) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + String sorting = conditionVo.getSort(); + if(sorting != null && !sorting.equals("")) { + sorting = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sorting); + if(conditionVo.getBy() != null && conditionVo.getBy().equalsIgnoreCase("DESC")) { + queryWrapper.orderByDesc(sorting); + } else { + queryWrapper.orderByAsc(sorting); + } + } + if(conditionVo.getFilters() == null || conditionVo.getFilters().size() == 0) { + return queryWrapper; + } + for(FilterVo filterVo : conditionVo.getFilters()) { + String column = filterVo.getColumn(); + column = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column); + switch (filterVo.getAction()) { + case "==" : + queryWrapper.eq(column, filterVo.getValue()); + break; + case "!=" : + queryWrapper.ne(column, filterVo.getValue()); + break; + case ">" : + queryWrapper.gt(column, filterVo.getValue()); + break; + case "<" : + queryWrapper.lt(column, filterVo.getValue()); + break; + case ">=" : + queryWrapper.ge(column, filterVo.getValue()); + break; + case "<=" : + queryWrapper.le(column, filterVo.getValue()); + break; + case "like" : + queryWrapper.like(column, filterVo.getValue()); + break; + case "in" : + queryWrapper.in(column, filterVo.getValue()); + break; + case "notin" : + queryWrapper.notIn(column, filterVo.getValue()); + break; + case "betweeen" : + String[] strs = filterVo.getValue().split(","); + if(strs.length != 2) { + continue; + } + queryWrapper.between(column, strs[0], strs[1]); + break; + case "isNull" : + queryWrapper.isNull(column); + break; + case "isNotNull" : + queryWrapper.isNotNull(column); + break; + default: + break; + } + } + return queryWrapper; + } +} diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java new file mode 100644 index 00000000..3308def5 --- /dev/null +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/ConditionVo.java @@ -0,0 +1,35 @@ +package com.win.framework.mybatis.core.vo; + +import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +/** + * 自定义查询条件 + */ +@Schema(description = "自定义查询条件") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ConditionVo extends PageParam { + + /** + * 排序字段 + */ + private String sort; + + /** + * 正序倒序 + */ + private String by; + + /** + * 检索字段 + */ + private List filters; + +} diff --git a/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java new file mode 100644 index 00000000..a65f56d4 --- /dev/null +++ b/win-framework/win-spring-boot-starter-mybatis/src/main/java/com/win/framework/mybatis/core/vo/FilterVo.java @@ -0,0 +1,21 @@ +package com.win.framework.mybatis.core.vo; + +import lombok.Data; + +@Data +public class FilterVo { + + /** + * 类型,==,!=,>,<,>=,<=,like,in,notIn,betweeen,isNull,isNotNull + */ + private String action; + /** + * 字段 + */ + private String column; + /** + * 值 + */ + private String value; + +}