|
|
@ -2,9 +2,8 @@ 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.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.util.collection.CollectionUtils; |
|
|
|
import com.win.framework.mybatis.core.vo.ConditionVo; |
|
|
|
import com.win.framework.mybatis.core.vo.FilterVo; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
|
|
|
/** |
|
|
@ -14,59 +13,58 @@ public class QueryWrapperUtils { |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据参数动态组装QueryWrapper |
|
|
|
* @param conditionVo filters {column: "userName", action: "==", value: "wenyin"} sorting userName DESC |
|
|
|
* @param customConditions filters {column: "userName", action: "==", value: "wenyin"} sorting userName DESC |
|
|
|
* @param <T> |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public static <T> QueryWrapper<T> structure(ConditionVo<T> conditionVo) { |
|
|
|
public static <T> QueryWrapper<T> structure(CustomConditions customConditions) { |
|
|
|
QueryWrapper<T> queryWrapper = new QueryWrapper<>(); |
|
|
|
String sorting = conditionVo.getSort(); |
|
|
|
String sorting = customConditions.getSort(); |
|
|
|
if(StringUtils.isEmpty(sorting)) { |
|
|
|
sorting = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sorting); |
|
|
|
if(StringUtils.equalsIgnoreCase(conditionVo.getBy(), "DESC")) { |
|
|
|
if(CustomConditions.ORDER_DESC.equals(customConditions.getBy())) { |
|
|
|
queryWrapper.orderByDesc(sorting); |
|
|
|
} else { |
|
|
|
queryWrapper.orderByAsc(sorting); |
|
|
|
} |
|
|
|
} |
|
|
|
if(CollectionUtils.isAnyEmpty(conditionVo.getFilters())) { |
|
|
|
if(CollectionUtils.isAnyEmpty(customConditions.getFilters())) { |
|
|
|
return queryWrapper; |
|
|
|
} |
|
|
|
for(FilterVo filterVo : conditionVo.getFilters()) { |
|
|
|
String column = filterVo.getColumn(); |
|
|
|
for(CustomConditions.Condition condition : customConditions.getFilters()) { |
|
|
|
String column = condition.getColumn(); |
|
|
|
column = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, column); |
|
|
|
switch (filterVo.getAction()) { |
|
|
|
switch (condition.getAction()) { |
|
|
|
case "==" : |
|
|
|
queryWrapper.eq(column, filterVo.getValue()); |
|
|
|
queryWrapper.eq(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "!=" : |
|
|
|
queryWrapper.ne(column, filterVo.getValue()); |
|
|
|
queryWrapper.ne(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case ">" : |
|
|
|
queryWrapper.gt(column, filterVo.getValue()); |
|
|
|
queryWrapper.gt(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "<" : |
|
|
|
queryWrapper.lt(column, filterVo.getValue()); |
|
|
|
queryWrapper.lt(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case ">=" : |
|
|
|
queryWrapper.ge(column, filterVo.getValue()); |
|
|
|
queryWrapper.ge(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "<=" : |
|
|
|
queryWrapper.le(column, filterVo.getValue()); |
|
|
|
queryWrapper.le(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "like" : |
|
|
|
queryWrapper.like(column, filterVo.getValue()); |
|
|
|
queryWrapper.like(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "in" : |
|
|
|
queryWrapper.in(column, filterVo.getValue()); |
|
|
|
queryWrapper.in(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "notin" : |
|
|
|
queryWrapper.notIn(column, filterVo.getValue()); |
|
|
|
queryWrapper.notIn(column, condition.getValue()); |
|
|
|
break; |
|
|
|
case "betweeen" : |
|
|
|
String[] strs = filterVo.getValue().split(","); |
|
|
|
String[] strs = condition.getValue().split(","); |
|
|
|
if(strs.length != 2) { |
|
|
|
continue; |
|
|
|
break; |
|
|
|
} |
|
|
|
queryWrapper.between(column, strs[0], strs[1]); |
|
|
|
break; |
|
|
|