SearchUtil.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package com.zksy.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  5. import java.net.URLDecoder;
  6. import java.util.List;
  7. /**
  8. * @author zkh
  9. * @since 2020-03-16
  10. */
  11. public class SearchUtil {
  12. public static QueryWrapper parseWhereSql(String conditionJson) throws Exception{
  13. QueryWrapper<?> queryWrapper = new QueryWrapper();
  14. String[] empty = {"none"};
  15. if(StringUtils.isNotBlank(conditionJson)){
  16. conditionJson = URLDecoder.decode(conditionJson, "UTF-8");
  17. List<ConditionVo> conditionList = JSON.parseArray(conditionJson,ConditionVo.class);
  18. if(conditionList.size()>0){
  19. for(ConditionVo conditionVo : conditionList){
  20. switch (conditionVo.getType()){
  21. case "eq": queryWrapper.eq(conditionVo.getColumn(),conditionVo.getValue());break;
  22. case "ne": queryWrapper.ne(conditionVo.getColumn(),conditionVo.getValue());break;
  23. case "between": queryWrapper.between(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(",")[0],conditionVo.getValue().split(",")[1]);break;
  24. case "like": queryWrapper.like(conditionVo.getColumn(),conditionVo.getValue());break;
  25. case "leftLike": queryWrapper.likeLeft(conditionVo.getColumn(),conditionVo.getValue());break;
  26. case "rightLike": queryWrapper.likeRight(conditionVo.getColumn(),conditionVo.getValue());break;
  27. case "notLike": queryWrapper.notLike(conditionVo.getColumn(),conditionVo.getValue());break;
  28. case "exists": queryWrapper.exists(conditionVo.getValue());break;
  29. case "notExists": queryWrapper.notExists(conditionVo.getValue());break;
  30. case "gt": queryWrapper.gt(conditionVo.getColumn(),conditionVo.getValue());break;
  31. case "lt": queryWrapper.lt(conditionVo.getColumn(),conditionVo.getValue());break;
  32. case "ge": queryWrapper.ge(conditionVo.getColumn(),conditionVo.getValue());break;
  33. case "le": queryWrapper.le(conditionVo.getColumn(),conditionVo.getValue());break;
  34. case "or": queryWrapper.or();break;
  35. case "orLike2":
  36. String[] columns = conditionVo.getColumn().split(",");
  37. queryWrapper.and(wrapper ->
  38. wrapper.and(swrapper -> swrapper.like(columns[0], conditionVo.getValue()).or().like(columns[1], conditionVo.getValue())));
  39. break;
  40. case "in": queryWrapper.in(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(","));break;
  41. case "notIn": queryWrapper.notIn(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(","));break;
  42. case "isNull": queryWrapper.isNull(conditionVo.getColumn());break;
  43. case "isNotNull": queryWrapper.isNotNull(conditionVo.getColumn());break;
  44. case "orderByAsc": queryWrapper.orderByAsc(conditionVo.getColumn());break;
  45. case "orderByDesc": queryWrapper.orderByDesc(conditionVo.getColumn());break;
  46. default:
  47. }
  48. }
  49. }
  50. }
  51. return queryWrapper;
  52. }
  53. }