對於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語句,就是我想要的效果。