easymybatis的Query詳解
阿新 • • 發佈:2018-02-12
大於等於 都是 time queryall 信息 ges setquery 做了 介紹
在上一篇easymybatis的查詢功能文章中大量用到了Query類,Query是一個查詢參數類,通常配合Dao一起使用。
easymybatis的所有查詢工作都是圍繞Query類來進行,本文就來詳細介紹一下這個類。
參數介紹
Query裏面封裝了一系列查詢參數,主要分為以下幾類:
- 分頁參數:設置分頁
- 排序參數:設置排序字段
- 條件參數:設置查詢條件
- 字段參數:可返回指定字段
下面逐個講解每個參數的用法。
分頁參數
一般來說分頁的使用比較簡單,通常是兩個參數, pageIndex:當前頁索引,pageSize:每頁幾條數據。 Query類使用**setPage(pageIdnex, pageSize)**方法來設置。 假如我們要查詢第二頁,每頁10條數據,代碼可以這樣寫:
Query query = new Query(); query.setPage(2, 10); List<User> list = dao.find(query);
如果要實現不規則分頁,可以這樣寫:
Query query = new Query(); query.setStart(3).setLimit(5); // 對應mysql:limit 3,5
- 如果要查詢所有數據,則可以這樣寫:
Query query = new Query(); query.setQueryAll(true); List<User> list = dao.find(query);
排序參數
設置排序,有兩個方法:
addSort(String sortname)
addSort(String sortname, Sort sort)
其中sortname為數據庫字段,非javaBean屬性
- addSort(String sortname) 添加排序字段,默認使用ASC
- addSort(String sortname, Sort sort)則可以指定排序方式,Sort為排序方式枚舉 假如要按照添加時間倒序,可以這樣寫:
Query query = new Query(); query.addSort("create_time",Sort.DESC); dao.find(query);
添加多個排序字段可以在後面追加:
query.addSort("create_time",Sort.DESC).addSort("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"都為數據庫字段。
easymybatis的Query詳解