| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package com.zksy.utils;
- import com.alibaba.fastjson.JSON;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import java.net.URLDecoder;
- import java.util.List;
- /**
- * @author zkh
- * @since 2020-03-16
- */
- public class SearchUtil {
- public static QueryWrapper parseWhereSql(String conditionJson) throws Exception{
- QueryWrapper<?> queryWrapper = new QueryWrapper();
- String[] empty = {"none"};
- if(StringUtils.isNotBlank(conditionJson)){
- conditionJson = URLDecoder.decode(conditionJson, "UTF-8");
- List<ConditionVo> conditionList = JSON.parseArray(conditionJson,ConditionVo.class);
- if(conditionList.size()>0){
- for(ConditionVo conditionVo : conditionList){
- switch (conditionVo.getType()){
- case "eq": queryWrapper.eq(conditionVo.getColumn(),conditionVo.getValue());break;
- case "ne": queryWrapper.ne(conditionVo.getColumn(),conditionVo.getValue());break;
- case "between": queryWrapper.between(
- conditionVo.getColumn(),
- conditionVo.getValue() == null ? empty : conditionVo.getValue().split(",")[0],
- conditionVo.getValue().split(",")[1]
- );break;
- case "like": queryWrapper.like(conditionVo.getColumn(),conditionVo.getValue());break;
- case "leftLike": queryWrapper.likeLeft(conditionVo.getColumn(),conditionVo.getValue());break;
- case "rightLike": queryWrapper.likeRight(conditionVo.getColumn(),conditionVo.getValue());break;
- case "notLike": queryWrapper.notLike(conditionVo.getColumn(),conditionVo.getValue());break;
- case "exists": queryWrapper.exists(conditionVo.getValue());break;
- case "notExists": queryWrapper.notExists(conditionVo.getValue());break;
- case "gt": queryWrapper.gt(conditionVo.getColumn(),conditionVo.getValue());break;
- case "lt": queryWrapper.lt(conditionVo.getColumn(),conditionVo.getValue());break;
- case "ge": queryWrapper.ge(conditionVo.getColumn(),conditionVo.getValue());break;
- case "le": queryWrapper.le(conditionVo.getColumn(),conditionVo.getValue());break;
- case "or": queryWrapper.or();break;
- case "orLike2":
- String[] columns = conditionVo.getColumn().split(",");
- queryWrapper.and(wrapper ->
- wrapper.and(swrapper -> swrapper.like(columns[0], conditionVo.getValue()).or().like(columns[1], conditionVo.getValue())));
- break;
- case "in": queryWrapper.in(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(","));break;
- case "notIn": queryWrapper.notIn(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(","));break;
- case "isNull": queryWrapper.isNull(conditionVo.getColumn());break;
- case "isNotNull": queryWrapper.isNotNull(conditionVo.getColumn());break;
- case "orderByAsc": queryWrapper.orderByAsc(conditionVo.getColumn());break;
- case "orderByDesc": queryWrapper.orderByDesc(conditionVo.getColumn());break;
- default:
- }
- }
- }
- }
- return queryWrapper;
- }
- }
|