欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于MyBatis Plus中使用or和and問題

 更新時(shí)間:2020年12月26日 10:46:24   作者:mingruixu  
這篇文章主要介紹了關(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)文章

最新評(píng)論