關(guān)于MyBatis Plus中使用or和and問題
最近在使用MyBatis Plus,發(fā)現(xiàn)在拼接條件的時(shí)候,and和or會(huì)出問題,比如下面這種
QueryWrapper userWrapper = new QueryWrapper();
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 userWrapper = new QueryWrapper();
userWrapper.eq(“name”, name); userWrapper.and(wrapper ->wrapper.eq(“pwd”, pwd).or().eq(“phone”, phone));
select * from user where name = ? and ( pwd= ? or phone = ?)
補(bǔ)充:MyBatisPlus中and與or的連用
QueryWrapper<User> userWrapper = new QueryWrapper<>(); String type = (String) map.get("type"); if(StringUtils.isNotBlank(type)) { userWrapper.eq("is_admin", "admin".equals(type) ? true : false); } String keys = (String) map.get("key"); if(StringUtils.isNotBlank(keys)) { userWrapper.and(wrapper -> wrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys)); }
對(duì)應(yīng)打印的SQL語句為:
SELECT id, login_name AS loginName, is_admin AS adminUser, ... del_flag AS delFlag, remarks FROM sys_user WHERE is_admin = 0 AND ( login_name LIKE '%j%' OR tel LIKE '%j%' OR email LIKE '%j%' )
注意:
userWrapper.and(…)中的and為后面的條件加上了括號(hào),如果沒有and(),直接使用
userWrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys)
這一部分對(duì)應(yīng)的SQL語句是不會(huì)被括號(hào)包圍的(若使用or(…),同理);
2. and(…)中的wrapper -> wrapper,注意名稱需要相同。
到此這篇關(guān)于關(guān)于MyBatis Plus中使用or和and問題的文章就介紹到這了,更多相關(guān)MyBatis Plus使用or和and內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ThreadPoolExecutor線程池原理及其execute方法(詳解)
下面小編就為大家?guī)硪黄猅hreadPoolExecutor線程池原理及其execute方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Java enum關(guān)鍵字不識(shí)別的快速解決辦法
這篇文章主要介紹了Java enum關(guān)鍵字不識(shí)別的快速解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09Spring Boot配置接口WebMvcConfigurer的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot配置接口WebMvcConfigurer的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11SpringBoot項(xiàng)目導(dǎo)入aliyun oss starter依賴后啟動(dòng)報(bào)錯(cuò)問題
這篇文章主要介紹了SpringBoot項(xiàng)目導(dǎo)入aliyun oss starter依賴后啟動(dòng)報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01使用Spring開啟@Async異步方式(javaconfig配置)
這篇文章主要介紹了使用Spring開啟@Async異步方式(javaconfig配置),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08SpringMVC結(jié)合天氣api實(shí)現(xiàn)天氣查詢
這篇文章主要為大家詳細(xì)介紹了SpringMVC結(jié)合天氣api實(shí)現(xiàn)天氣查詢,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05grade構(gòu)建閱讀spring源碼環(huán)境 Idea2020.3的過程
這篇文章主要介紹了grade構(gòu)建閱讀spring源碼環(huán)境 Idea2020.3,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Java使用pdfbox實(shí)現(xiàn)給pdf文件加圖片水印
有時(shí)候需要給pdf加水印,市面上工具都是收費(fèi)的要會(huì)員,還是自食其力吧;嘗試過 spire.pdf.free 那個(gè)超過10頁(yè)就不行了!所以本文還是使用了pdfbox,感興趣的可以了解一下2022-11-11