LambdaQueryWrapper 中如何采用like的前导like查询
对于LambdaQueryWrapper这中方式的查询,想必大家都已经使用的非常熟练了,而且也确实使用起来相对简单和方便。但是在最近的使用中发现了一个现像,也就是在like的适合,生成的sql语句式前后都模糊的,这种方式在实际的项目中应该式慎重使用的,因为前面模糊对于系统的性能式有很大的挑战的,尤其是数据量较大,并发也较大的场景,这几乎就是致命的打击。
我想要的效果只是需要在变量的后面加上模糊就可以了,所以一顿网上搜索,最后终于找到了答案,其实也是比较简单,一个方法而已。
下面就把例子代码提附上,大家一看就明了了:
1 @Override 2 public List<AuditorInformationDTO> queryUnitBySaveId(String saveId) { 3 4 LambdaQueryWrapper<AuditorInformation> queryWrapper = new LambdaQueryWrapper<>(); 5 // queryWrapper.like(AuditorInformation::getComments,saveId); 6 queryWrapper.apply("AAE013"+" like {0}", saveId+"%"); 7 8 List<AuditorInformation> queryList = auditorInformationBLO.list(queryWrapper); 9 // 类型转换 10 List<AuditorInformationDTO> retList = ClassTypeConvert.conertList(AuditorInformationDTO.class,queryList); 11 return retList; 12 }
原来注释掉的那段代码也还在,可以对比一下,看看。这样修改的后果,我看了一下控制台打出的sql语句,就是我想要的效果。