1. 程式人生 > >mybatis處理and、or關係的方法

mybatis處理and、or關係的方法

1.( xx and xx) or ( xx and xx) 

例項程式碼:

  1. BaUserExample baUserExample = new BaUserExample();  
  2. Criteria criteria1 = baUserExample.createCriteria();  
  3. criteria1.andOrgIdEqualTo("1");  
  4. criteria1.andDeptIdEqualTo("1");  
  5. Criteria criteria2 = baUserExample.createCriteria();  
  6. criteria2.andUserNameEqualTo("name"
    );  
  7. criteria2.andEmailLike("%[email protected]%");  
  8. baUserExample.or(criteria2);  
  9. userMapper.countByExample(baUserExample);  

執行的sql語句:

  1. ==>  Preparing: select count(*) from ba_user WHERE ( org_id = ? and dept_id = ? ) or( user_name = ? and email like ? )  

2.xx and ( xx or xx)

暫時沒找到直接的sql語句構造方法,但是經過轉換還是可以實現的

根據邏輯表示式可以知道 a and ( b or c ) = ( a and b) or ( a and c )

所以就轉變成第一種方法

舉個例子,加入想要實現 select count(*) from ba_user WHERE userName like ? and ( dept_id is null or dept_id <>? )

可以轉化為select count(*) from ba_user WHERE (userName like ? and  dept_id is null ) or ( userName like ? and  dept_id <>? )

例項程式碼:

  1. BaUserExample baUserExample = new BaUserExample();  
  2. Criteria criteria1 = baUserExample.createCriteria();  
  3. criteria1.andUserNameLike("%name%");  
  4. criteria1.andDeptIdIsNull();  
  5. Criteria criteria2 = baUserExample.createCriteria();  
  6. criteria2.andUserNameLike("%name%");  
  7. criteria2.andDeptIdNotEqualTo("1");  
  8. baUserExample.or(criteria2);  
  9. userMapper.countByExample(baUserExample);  


執行的sql語句:

  1. ==>  Preparing: select count(*) from ba_user WHERE ( user_name like ? and dept_id is null ) or( user_name like ? and dept_id <> ? )   

這算是一種取巧的方法吧,對於這樣的問題可以自己編寫mapper.xml檔案,或者在程式碼裡面過濾,還有一種思路就是修改Criteria的程式碼實現and和or功能調換(還沒嘗試過)。

相關推薦

mybatis處理andor關係方法

1.( xx and xx) or ( xx and xx)  例項程式碼: BaUserExample baUserExample = new BaUserExample();   Criteria criteria1 = baUserExample.crea

mybatis example處理andor關係方法(轉載wang_song_yan)作者不是我,我拿來備忘,謝謝原作者

mybatis example處理and、or關係的方法 2015年10月12日 23:02:43 wang_song_yan 閱讀數:28693 標籤: javaweb mybatis criteria sql andor 更多 個人分類: JavaWeb 1.( xx and x

mybatis處理集合循環數組和in查詢等語句的使用

round style 數組 cti abstract 進行 每一個 過濾 註入 在Mybatis的xml配置中使用集合,主要是用到了foreach動態語句。 foreach的參數:foreach元素的屬性主要有 item,index,collection,open,se

學 Win32 匯編[22] - 邏輯運算指令: ANDORXORNOTTEST

xor 原來 .lib 標誌位 cal loop win text model AND: 邏輯與 ;該指令會置 CF=OF=0; 其結果影響 SF、ZF、PF ;指令格式: AND r/m, r/m/i ; Test22_1.asm - 使用 AND 運算將一個數的第

07 數據過濾 - andornotin

end sql 執行 exist 優先 最大 邏輯 rom products 組合where子句 可以使用邏輯操作符(AND、OR)組合where子句 select prod_id, prod_price, prod_name from products where

Python中運算符notandor

true 運算符 nbsp pytho false 情況下 color tro 布爾 優先級1. and 與 2. or 或 3. not 非運算要記住:數字中非零為真零為假;True 為真 False 為假。or :與and相反,任意一個真即為真,同假才為假(因為要挨個查

MyBatis——一對多一對一關係,collectionassociation

實體類兩個: user類: package com.pojo; /** *使用者 */ public class User{ private int userId;//使用者ID private String username;//使用者名稱 private String p

Excel函式公式:IF函式和ANDOR函式的組合多條件判斷技巧

經常使用Excel函式的小夥伴們都知道,在Excel中使用頻率最高的還是那些比較簡單的函式,其中IF函式就是高頻率函式之一,那麼,能不能用IF函式來進行多條件運算呢? 一、IF+AND:同時滿足多個條件 目的:將“上海”地區的“男”通知標識為“Y”。 方法: 在目標單元格中輸入公式:=IF(AND(D

Excel函數公式:IF函數和ANDOR函數的組合多條件判斷技巧

ofo 輸入 公式 條件判斷 excel 圖片 比較 and 標準 經常使用Excel函數的小夥伴們都知道,在Excel中使用頻率最高的還是那些比較簡單的函數,其中IF函數就是高頻率函數之一,那麽,能不能用IF函數來進行多條件運算呢? 一、IF+AND:同時滿足多個條件 目

python中andor的妙用

我們大家都知道and是且的意思,or是或的意思。那麼今天我給大家看看and與or還有這樣的一面,關於not我就不做闡述了,因為not非常簡單,當然在實際工作中也常常使用到,也是非常重要的,not True返回False,not False返回True 從上圖中我們可以得知,當兩個字元通過o

python中 andor和 &|

and: 表示式a and表示式 b: 表示式a 如果是真,那麼就返回表示式 b 表示式a 如果為假,那麼就返回表示式 a or: 表示式 a or 表示式 b: 表示式 a如果為真,那麼就返回表示式 a 表示式 a如果為假,那麼就返回表示式 b &:標示與運算 1&

【MongoDB】-Java實現對mongodb的AndOrIn操作

1)And(同時滿足多個條件時用And) public void testAnd(){ DBObject queryCondition = new BasicDBObject();

mongo java中andor多條件查詢

        //and、or多條件聯合查詢         //age條件(and條件)         BasicDBList condList = new BasicDBList();          BasicDBObject cond = new BasicD

Java實現對MongoDB的ANDOR和IN操作

       在MongoDB的官方文件中關於Java操作的介紹,只給出了很簡單的幾個例子。這些例子雖然可以滿足一定的需求,但是還並不是太完全。下面是我根據網頁中的提示寫的幾個例子。        1

資料庫中ANDORINNOTBETWEENNULL操作符

 1、AND和OR操作符 任何時候使用具有AND和OR操作符的WHERE子句,都應該使用圓括號明確地分組操作符。不要過分依賴預設計算次序,即使它確實是你想要的東西也是如此。使用圓括號沒有什麼壞處,它能消除歧義。如上因為AND的優先順序更高,如果不加圓括號則會產生歧義。因為圓括號具

Elasticsearch: 布林(bool)過濾器--ANDORNOT查詢設定多個查詢欄位

概念 bool (布林)過濾器。 這是個 複合過濾器(compound filter) ,它可以接受多個其他過濾器作為引數,並將這些過濾器結合成各式各樣的布林(邏輯)組合。 格式 一個 bool 過濾器由三部分組成: { "bool" : {

mybatis處理集合迴圈陣列和in等語句的使用

在mybatis 批量執行sql時,報錯 java.util.list can't find. 原因:collection 屬性定義錯誤。 List a=ArrayList.asList(str); sql 遍歷資料a,  a為一個list,所以 collection 屬性要定義成 list

C++對andor等運算子的支援

// test.c // gcc test.c --- compile error #include <stdio.h> int main() { int a = (0) or (0); printf("%d", a); return a; } 上

python中andornot三元運算

在python中邏輯運算子有and、or、not,分別表示與、或、非。這裡對他們進行簡單的解釋。 1.and是與的意思。 (1)當前後兩邊都為True,返回後一個結果 In [1]: True and “a” Out[1]: ‘a’ In [2]: “a” an

DOS命令 的條件判斷(與或非:andor not)

DOS 命令實在是太弱,太難用了,基本的邏輯判斷寫起來都很費勁。一般的與或非如何解決呢? 1、非 這個有現成的,條件判斷前加not,例如: C:\Users\HW>if 1==1 echo Ok Ok C:\Users\HW>if not 1==1 echo