模糊查詢中,會有針對一個數據,需要查詢數據庫的多個字段的情況,例如:
上圖中的平台名稱和平台進程在數據表中是兩個不同的字段,
如果不使用Mybatisplus,僅使用Mybatis,則只有通過寫xml的方式進行手動書寫SQL,這樣效率不高,針對這種SQL中可能出現or(),and()之類的條件,Mybatisplus提供了很好的解決方案:
@Override public IPage<SpeedDownloadInfo> listSpeedDownInfo(SpeedDownloadRequest request, Integer pageNo, Integer pageSize) { LambdaQueryWrapper<SpeedDownloadInfo> queryWrapper = Wrappers.<SpeedDownloadInfo>lambdaQuery() .between(SpeedDownloadInfo::getCreateTime, DateUtil.beginOfDay(request.getBegin()), DateUtil.endOfDay(request.getEnd())) .and(!StringUtils.isEmpty(request.getQueryString()), wrapper -> wrapper.like(SpeedDownloadInfo::getPlatformName, request.getQueryString()) .or().like(SpeedDownloadInfo::getPlatformDomain, request.getQueryString())); return speedDownloadInfoMapper.selectPage(new Page<>(pageNo,pageSize),queryWrapper); }
以上代碼等價為
SELECT * FROM speed_download_info WHERE create_time BETWEEN ? AND ? AND ( platform_name LIKE ? OR platform_domain LIKE ? )
參考:
https://blog.csdn.net/mojiewangday/article/details/108223785?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.add_param_isCf