SearchUtil.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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(
  24. conditionVo.getColumn(),
  25. conditionVo.getValue() == null ? empty : conditionVo.getValue().split(",")[0],
  26. conditionVo.getValue().split(",")[1]
  27. );break;
  28. case "like": queryWrapper.like(conditionVo.getColumn(),conditionVo.getValue());break;
  29. case "leftLike": queryWrapper.likeLeft(conditionVo.getColumn(),conditionVo.getValue());break;
  30. case "rightLike": queryWrapper.likeRight(conditionVo.getColumn(),conditionVo.getValue());break;
  31. case "notLike": queryWrapper.notLike(conditionVo.getColumn(),conditionVo.getValue());break;
  32. case "exists": queryWrapper.exists(conditionVo.getValue());break;
  33. case "notExists": queryWrapper.notExists(conditionVo.getValue());break;
  34. case "gt": queryWrapper.gt(conditionVo.getColumn(),conditionVo.getValue());break;
  35. case "lt": queryWrapper.lt(conditionVo.getColumn(),conditionVo.getValue());break;
  36. case "ge": queryWrapper.ge(conditionVo.getColumn(),conditionVo.getValue());break;
  37. case "le": queryWrapper.le(conditionVo.getColumn(),conditionVo.getValue());break;
  38. case "or": queryWrapper.or();break;
  39. case "orLike2":
  40. String[] columns = conditionVo.getColumn().split(",");
  41. queryWrapper.and(wrapper ->
  42. wrapper.and(swrapper -> swrapper.like(columns[0], conditionVo.getValue()).or().like(columns[1], conditionVo.getValue())));
  43. break;
  44. case "in": queryWrapper.in(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(","));break;
  45. case "notIn": queryWrapper.notIn(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(","));break;
  46. case "isNull": queryWrapper.isNull(conditionVo.getColumn());break;
  47. case "isNotNull": queryWrapper.isNotNull(conditionVo.getColumn());break;
  48. case "orderByAsc": queryWrapper.orderByAsc(conditionVo.getColumn());break;
  49. case "orderByDesc": queryWrapper.orderByDesc(conditionVo.getColumn());break;
  50. default:
  51. }
  52. }
  53. }
  54. }
  55. return queryWrapper;
  56. }
  57. }