mybatis-plus QueryWrapper and or 連用并且實現(xiàn)分頁
QueryWrapper and or 連用并分頁
Page<TestEntity> rpage = baseMapper.selectPage( new Page<>(pageBean.getPageSize(), pageBean.getPageNum()), new QueryWrapper<TestEntity>() .eq("siteid", siteid) .and( wrapper -> wrapper .or() .lt("createtime", updatetime) .or() .lt("deletetime", updatetime) .or() .lt("operatetime", updatetime) .or() .lt("updatetime", updatetime)));
and or 拼完后的結(jié)果是這樣的
new QueryWrapper<TestEntity>() ? ? ? ? ? ? ? ? .eq("siteid", siteid) ? ? ? ? ? ? ? ? .and( ? ? ? ? ? ? ? ? ? ? wrapper -> ? ? ? ? ? ? ? ? ? ? ? ? wrapper ? ? ? ? ? ? ? ? ? ? ? ? ? ? .or() ? ? ? ? ? ? ? ? ? ? ? ? ? ? .lt("createtime", updatetime) ? ? ? ? ? ? ? ? ? ? ? ? ? ? .or() ? ? ? ? ? ? ? ? ? ? ? ? ? ? .lt("deletetime", updatetime) ? ? ? ? ? ? ? ? ? ? ? ? ? ? .or() ? ? ? ? ? ? ? ? ? ? ? ? ? ? .lt("operatetime", updatetime) ? ? ? ? ? ? ? ? ? ? ? ? ? ? .or() ? ? ? ? ? ? ? ? ? ? ? ? ? ? .lt("updatetime", updatetime)))
SELECT * FROM t WHERE useflag = 1 AND ( siteid =? AND ( createtime < ? OR deletetime < ? OR operatetime < ? OR updatetime < ?))
使用or和and的問題
最近在使用MyBatis Plus,發(fā)現(xiàn)在拼接條件的時候,and和or會出問題
比如下面這種
QueryWrapper<User> userWrapper = new QueryWrapper<User>(); userWrapper.eq("name", name); userWrapper.eq("pwd", pwd).or().eq("phone", phone);
這種寫法拼出來的SQL語句是這樣的
select * from user where (name = ? and pwd= ? or phone = ?)
這樣子是肯定不行的,于是去官網(wǎng)查詢,發(fā)現(xiàn)正確的寫法是這樣的
QueryWrapper<User> userWrapper = new QueryWrapper<User>(); userWrapper.eq("name", name); userWrapper.and(wrapper -> wrapper.eq("pwd", pwd).or().eq("phone", phone)); select * from user where name = ? and ( pwd= ? or phone = ?)
萬事大吉?。?!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- mybatis-plus自帶QueryWrapper自定義sql實現(xiàn)復(fù)雜查詢實例詳解
- Mybatis-plus動態(tài)條件查詢QueryWrapper的使用案例
- MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用詳解
- 基于mybatis-plus QueryWrapper 排序的坑
- mybatis-plus QueryWrapper 添加limit方式
- Mybatis-Plus 條件構(gòu)造器 QueryWrapper 的基本用法
- MyBatis-Plus實現(xiàn)2種分頁方法(QueryWrapper查詢分頁和SQL查詢分頁)
- mybatis-plus QueryWrapper自定義查詢條件的實現(xiàn)
- Mybatis-plus中QueryWrapper的多種用法小結(jié)
相關(guān)文章
如何在mapper文件中使用in("str1","str2")
這篇文章主要介紹了如何在mapper文件中使用in("str1","str2"),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01Java實現(xiàn)查找算法的示例代碼(二分查找、插值查找、斐波那契查找)
查找就是根據(jù)給定的某個值,在查找表中確定一個其關(guān)鍵字等于給定值的數(shù)據(jù)元素。本文介紹了常見的數(shù)據(jù)查找算法:順序查找、二分查找、插值查找和斐波那契查找等以及相應(yīng)的Java代碼實現(xiàn)。需要的可以參考一下2022-01-01java 將 list 字符串用逗號隔開拼接字符串的多種方法
這篇文章主要介紹了java 將 list 字符串用逗號隔開拼接字符串,本文給大家分享四種方法,每種方法通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL
這篇文章主要介紹了一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09springboot 啟動時初始化數(shù)據(jù)庫的步驟
這篇文章主要介紹了springboot 啟動時初始化數(shù)據(jù)庫的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2021-01-01