Mybatis——Example用法

Example類

Example類指定如何構(gòu)建一個動態(tài)的where子句. 表中的每個non-BLOB列可以被包括在where子句中. 例子是展示此類用法的最好方式.

Example類可以用來生成一個幾乎無限的where子句.

Example類包含一個內(nèi)部靜態(tài)類 Criteria 包含一個用 anded 組合在where子句中的條件列表. Example類包含一個 List 屬性,所有內(nèi)部類Criteria中的子句會用 ored組合在一起. 使用不同屬性的 Criteria 類允許您生成無限類型的where子句.

創(chuàng)建 Criteria 對象 可以使用Example類中的 createCriteria() 或者 or() . 如果 Criteria 對象是用 createCriteria() 創(chuàng)建的,它會自動為 List 屬性添加一個 Criteria 對象 - 這使得它更容易寫一個簡單的where子句, 如果您不需要 or 或者其他幾個子句組合的話. 用 or(Criteria criteria) 方法創(chuàng)建 Criteria 對象, 方法里的 criteria 對象會被添加進 Criteria 對象的列表中.

重要 我們推薦您只使用 or() 方法創(chuàng)建 Criteria 對象. 我們相信這種方法使代碼更有可讀性.

用法

簡單查詢

這個例子展示了如何用生成后的Example類去生成一個簡單的where子句:

TestTableExample example = new TestTableExample();
example.createCriteria().andField1EqualTo(5); 

作為另一種選擇, 下面的方式也是可以的:

TestTableExample example = new TestTableExample();
example.or().andField1EqualTo(5); 

在上面的例子中, 動態(tài)生成的where子句是:

where field1 = 5

下面的例子展示了如何用生成后的Example類去生成一個復(fù)雜的where子句 (用到了 JSE 5.0 的泛型):

TestTableExample example = new TestTableExample();

example.or() 
.andField1EqualTo(5) 
.andField2IsNull();

example.or() 
.andField3NotEqualTo(9) 
.andField4IsNotNull();

List field5Values = new ArrayList(); 
field5Values.add(8); 
field5Values.add(11); 
field5Values.add(14); 
field5Values.add(22);

example.or() 
.andField5In(field5Values);

example.or() 
.andField6Between(3, 7);

在上面的例子中, 動態(tài)生成的where子句是:

where (field1 = 5 and field2 is null) 
or (field3 <> 9 and field4 is not null) 
or (field5 in (8, 11, 14, 22)) 
or (field6 between 3 and 7) 

將會返回滿足這些條件的記錄結(jié)果.

去重復(fù)查詢

您可以在所有的Example類中調(diào)用 setDistinct(true) 方法進行強制去重復(fù)查詢.

Criteria類

Criteria 內(nèi)部類的每個屬性都包含 andXXX 方法,以及如下的標(biāo)準(zhǔn)的SQL查詢方法:

IS NULL - 指相關(guān)的列必須為NULL 
IS NOT NULL - 指相關(guān)的列必須不為NULL 
= (equal) - 指相關(guān)的列必須等于方法參數(shù)中的值 
<> (not equal) - 指相關(guān)的列必須不等于方法參數(shù)中的值

(greater than) - 指相關(guān)的列必須大于方法參數(shù)中的值 
= (greater than or equal) - 指相關(guān)的列必須大于等于方法參數(shù)中的值 
< (less than) - 指相關(guān)的列必須小于于方法參數(shù)中的值 
<= (less than or equal) - 指相關(guān)的列必須小于等于方法參數(shù)中的值 
LIKE - 指相關(guān)的列必須 “l(fā)ike” 方法參數(shù)中的值. 這個方法不用必須加入 ‘%’, 您必須設(shè)置方法參數(shù)中的值. 
NOT LIKE - 指相關(guān)的列必須 “not like” 方法參數(shù)中的值. 這個方法不用必須加入 ‘%’, 您必須設(shè)置方法參數(shù)中的值. 
BETWEEN - 指相關(guān)的列必須在 “between” 方法參數(shù)中的兩個值之間. 
NOT BETWEEN - 指相關(guān)的列必須不在 “not between” 方法參數(shù)中的兩個值之間. 
IN - 指相關(guān)的列必須在傳入的方法參數(shù)的list中. 
NOT IN - 指相關(guān)的列必須不在傳入的方法參數(shù)的list中.

Ref:
http://blog.csdn.net/zhemeban/article/details/71901759

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4493116...
    王帥199207閱讀 2,773評論 0 19
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,696評論 18 399
  • 2017.10.2 放假的第三天,到明天3號。就是一年零一個月整了。時間太快,讓我措不及防。 在今天,我忽然...
    走丟的龍貓麻麻閱讀 304評論 0 0
  • 鑫說要離開網(wǎng)絡(luò)一段時間,她的離開不是就不來了,而是天天不再像現(xiàn)在似的上這么頻繁了。 可能離開是一個傷感的話題,每次...
    OO碰到OO閱讀 425評論 0 0

友情鏈接更多精彩內(nèi)容