【MybatisPlus】使用Wrappers條件構造器構造or和and


模糊查詢中,會有針對一個數據,需要查詢數據庫的多個字段的情況,例如:

 

 

上圖中的平台名稱和平台進程在數據表中是兩個不同的字段,

如果不使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM