關於MyBatis Plus中使用or和and問題

2022-09-27 05:57:06 字數 1403 閱讀 2893

最近在使用mybatis plus,發現在拼接條件的時候,and和or會出問題,比如下面這種

querywrapper userwrapper = new querywrapper();

userwrapper.eq(「namewww.cppcns.com」, name); userwrapper.eq(「pwd」,

pwd).or().eq(「phone」, phone);

這種寫法拼出來的sql語句是這樣的:

select * from user where (name = ? and pwd= ? or phone = ?)

這樣子是肯定不行的,於是去官網查詢,發現正確的寫法是這樣的

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 = ?)

補充:mybatisplus中and與or的連用

querywrapper程式設計客棧t; userwrapper = new querywrapper<>();

string type = (string) map.get("type");

if(stringutils.isnotblank(type))

string keys = (string) map.get("key");

if(stringutils.isnotblank(keys))

對應列印的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為後面的條件加上了括號,如果沒有and(),直接使用

userwrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys)

這一部分對應的sql語句是不會被括號包圍的(若使用or(…),同理);

2. and(…)中的wrapper -> wrapper,注意名稱需要相同。

關於mybatis plus最全知識總結

預設mp是去找跟你表名一樣的實體類。方法一 tablename t user 只能針對某乙個實體類 方法二 mybatis plus global config db config table prefix t 能針對全域性 mp預設是把屬性id作為主鍵,如果你的主鍵不叫id,則使用 tableid...

關於mybatis plus邏輯刪除無效的問題

新增如下註解value代表預設值delval代表刪除時的值 是否刪除 tablelogic value 0 delval 1 tablefield value del flag private boolean delflag 下圖是配置全部 如您知道上一步配置該新增到 那就請忽略下面的 配置 myb...

mybatis plus分頁步驟

控制器層 需要傳入兩個引數page 當前頁數 limit 每頁數量 獲取分頁資料 page page1 new page page,limit page1 noticeservice.getpagenotice page1 listnotices page1.getrecords 介面 pagege...