Ver Fonte

新增模糊查询使用字段清洗-即当字段要进行模糊查询时必须对特殊字符转译

caozixuan há 4 anos atrás
pai
commit
946a38ba85

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicCourseServiceImpl.java

@@ -12,6 +12,7 @@ import com.qmth.distributed.print.business.mapper.BasicCourseMapper;
 import com.qmth.distributed.print.business.service.BasicCourseService;
 import com.qmth.distributed.print.business.service.ExamDetailCourseService;
 import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.util.ConvertUtil;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
@@ -45,6 +46,8 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
     @Override
     public IPage<BasicCourse> list(String code, String name, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        code = ConvertUtil.translateSpecificSign(code);
+        name = ConvertUtil.translateSpecificSign(name);
         Page<BasicCourse> page = new Page<>(pageNumber, pageSize);
         IPage<BasicCourse> courseIPage = this.baseMapper.listPage(page, schoolId, code, name);
         return courseIPage;

+ 18 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/ConvertUtil.java

@@ -260,4 +260,22 @@ public class ConvertUtil {
             throw ExceptionResultEnum.ERROR.exception("[" + name + ":" + str + "]' 超过长度限制 : " + length);
         }
     }
+
+    /**
+     * 模糊查询时调用以去除符号"%","_"特殊字符对查询结果的影响
+     * @param param 要校验的参数
+     * @return 转译后的参数
+     */
+    public static String translateSpecificSign(String param){
+        if (param == null){
+            return null;
+        }
+        if (param.contains("%")){
+            param = param.replaceAll("%","\\\\%");
+        }
+        if (param.contains("_")){
+            param = param.replaceAll("_","\\\\_");
+        }
+        return param;
+    }
 }

+ 14 - 0
distributed-print/src/test/java/com/qmth/distributed/print/ServiceTest.java

@@ -1,7 +1,9 @@
 package com.qmth.distributed.print;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
+import com.qmth.distributed.print.business.entity.BasicCourse;
 import com.qmth.distributed.print.business.enums.MessageEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.util.ConvertUtil;
@@ -34,6 +36,8 @@ public class ServiceTest {
     private BasicMessageService basicMessageService;
     @Resource
     private BasicVerifyCodeService basicVerifyCodeService;
+    @Resource
+    private BasicCourseService basicCourseService;
 
 
     @Test
@@ -92,4 +96,14 @@ public class ServiceTest {
         basicVerifyCodeService.sendVeirfyCode("18903719928", 1L);
     }
 
+    @Test
+    public void like(){
+        QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
+        String name = "_";
+        name = ConvertUtil.translateSpecificSign(name);
+        queryWrapper.lambda().like(BasicCourse::getName,name);
+        List<BasicCourse> basicCourseList = basicCourseService.list(queryWrapper);
+        System.out.println(JSON.toJSONString(basicCourseList));
+    }
+
 }