1. 程式人生 > >分頁物件Query類詳解

分頁物件Query類詳解

本篇介紹Query類,Query是一個查詢引數類,封裝了查詢條件,分頁,排序等功能。

引數介紹
Query裡面封裝了一系列查詢引數,主要分為以下幾類:

分頁引數:設定分頁
排序引數:設定排序欄位
條件引數:設定查詢條件
欄位引數:可返回指定欄位
下面逐個講解每個引數的用法。

分頁引數
一般來說分頁的使用比較簡單,通常是兩個引數, 
pageIndex:當前頁索引,pageSize:每頁幾條資料。 
Query類使用page(pageIdnex, pageSize)方法來設定。 
假如我們要查詢第二頁,每頁10條資料,程式碼可以這樣寫:

Query query = new Query().page(2, 10);
List<User> list = dao.find(query);


如果要實現不規則分頁,可以這樣寫:

Query query = new Query().limit(3,5);

// 對應mysql:limit 3,5

如果要查詢所有資料,則可以這樣寫:

Query query = new Query();
List<User> list = dao.findAll(query);

排序引數
設定排序:

orderby(String sortname, Sort sort)

其中sortname為資料庫欄位,非javaBean屬性 
- orderby(String sortname, Sort sort)則可以指定排序方式,Sort為排序方式列舉 
假如要按照新增時間倒序,可以這樣寫:

Query query = new Query().orderby("create_time",Sort.DESC);
dao.find(query);

新增多個排序欄位可以在後面追加:

query.orderby("create_time",Sort.DESC).orderby("id",Sort.ASC);

條件引數
條件引數是用的最多一個,因為在查詢中往往需要加入各種條件。 
easymybatis在條件查詢上面做了一些封裝,這裡不做太多講解,只講下基本的用法,以後會單獨開一篇文章來介紹。感興趣的同學可以自行檢視原始碼,也不難理解。

條件引數使用非常簡單,Query物件封裝一系列常用條件查詢。

等值查詢eq(String columnName, Object value),columnName為資料庫欄位名,value為查詢的值 
假設我們要查詢姓名為張三的使用者,可以這樣寫:

Query query = new Query();
query.eq("username","張三");
List<User> list = dao.find(query);


通過方法名即可知道eq表示等於’=’,同理lt表示小於<,gt表示大於>

查詢方式    說明
eq    等於=
gt    大於>
lt    小於<
ge    大於等於>=
le    小於等於<=
notEq    不等於<>
like    模糊查詢
in    in()查詢
notIn    not in()查詢
isNull    NULL值查詢
notNull    IS NOT NULL
notEmpty    欄位不為空,非NULL且有內容
isEmpty    欄位為NULL或者為”
如果上述方法還不能滿足查詢需求的話,我們可以使用自定sql的方式來編寫查詢條件,方法為:

Query query = new Query();
query.sql(" username='Jim' OR username='Tom'");

注意:sql()方法不會處理sql注入問題,因此儘量少用。

欄位引數
在某些場景下,我們只想獲取表裡面幾個欄位的資訊,不想查詢所有欄位。此時使用方式如下:

Query query = new Query();
// 只返回id,username
query.setColumns(Arrays.asList("id","username"));
List<TUser> list = dao.find(query);


這裡的”id”,”username”都為資料庫欄位。