mybatis-plus QueryWrapper中or,and的使用及說明
QueryWrapper中or,and使用
這兩天開發(fā)使用mybatisPlus的QueryWrapper組件時遇到一個問題,功能是開發(fā)一個列表,因為涉及到用戶角色權(quán)限所以有個固定的查詢條件
queryWrapper.eq("user_id", userInfo.getUserId);列表中還要同時模糊查詢多個字段
所以我又增加了下面的語句
if(StringUtils.isNotBlank(name)) {
queryWrapper.like("user_name", name)
.or()
.like("user_admin_name",name );;
}當(dāng)這兩個條件單獨出現(xiàn)的時候查詢都是沒有問題,但是當(dāng)兩個條件同時出現(xiàn),就會發(fā)現(xiàn)查詢不是當(dāng)前角色的數(shù)據(jù)也會展示出來。
經(jīng)過排查
發(fā)現(xiàn)queryWrapper 的where執(zhí)行語句是這樣的
where (user_id='1' and user_name like '%葉%' or user_admin_name like '%葉%')
這就導(dǎo)致只要where后面的條件存在or的話
只要滿足條件了,都會查詢出結(jié)果集,后來經(jīng)過查詢文檔,在QueryWrapper組件中找到了and()方法的使用,即可達(dá)到我們的期望值
queryWrapper.and(wq -> {
// 拼接sql
wq.like("user_name", name)
.or()
.like("user_admin_name",name);
});where (user_id='1' and (user_name like '%葉%' or user_admin_name like '%葉%'))
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題
這篇文章主要介紹了基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題,具有很好2023-11-11
Spring Boot中實現(xiàn)定時任務(wù)應(yīng)用實踐
定時任務(wù)一般是項目中都需要用到的,可以用于定時處理一些特殊的任務(wù)。下面這篇文章主要給大家介紹了關(guān)于Spring Boot中實現(xiàn)定時任務(wù)應(yīng)用實踐的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-05-05

