最近在使用MyBatis Plus,發現在拼接條件的時候,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 = ?)
這樣子是肯定不行的,於是去官網查詢,發現正確的寫法是這樣的
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 = ?)
萬事大吉!!!