目標:
select
*from tb_brand where
(id >
3000
and name like
'%星%'
)or name =
'vivo'
;
// 建立example物件
example example =
newexample
(brand.
class);
// 通過example物件建立criteria物件
example.criteria criteria1 = example.
createcriteria()
;example.criteria criteria2 = example.
createcriteria()
;// 在criteria1物件中設定查詢條件: 查詢id大於3000且名稱帶"星"的品牌
criteria1.
andgreaterthan
("id"
,3000).
andlike
("name"
,"%星%");
// 在criteria2物件中設定查詢條件: 查詢名稱是"vivo"的品牌
criteria2.
andequalto
("name"
,"vivo");
// 使用or關鍵字組裝兩個criteria
example.
or(criteria2)
;// 執行查詢
list
selectbyexample
(example)
;for
(brand brand : brands)
對於example.or(criteria2)
的分析
為什麼只需要加乙個條件而不是下方這樣
example.
or(criteria1)
;example.
or(criteria2)
;
因為如果不寫or連線也可以直接根據第乙個條件查詢,現在是需要在第乙個查詢條件中加上另乙個查詢條件,所以只需要寫乙個。
如何判斷第乙個查詢條件?根據誰先建立。
// 因為是criteria1先建立,所以只需拼接criteria2即可
// 若是不拼接,就預設根據criteria1查詢
// 若criteria1和criteria2交換了位置,那麼就預設根據criterial2查詢
example.criteria criteria1 = example.
createcriteria()
;example.criteria criteria2 = example.
createcriteria()
;
上述情況原始碼解釋
在example
類中有這麼乙個引數用於存放criteria
protected list
oredcriteria;
建立criteria
呼叫的是createcriteria()
方法,說明如果是第乙個criteria則會預設加入list。
public criteria createcriteria()
return criteria;
}
上述**可預設模擬為如下sql語句
如果不加criteria
select
*from tb_brand where1=
1
如果加了criteria,下方的and拼接即是criteria.setandor("and")
這段**的實現
select
*from tb_brand where1=
1and
(id >
3000
and name like
'%星%'
)
為什麼要用多個criteria
設想這樣的sql業務場景
select
*from tb_brand where1=
1and
(id >
3000
and name like
'%星%')or
(id <
1000
and name like
'%貝%'
)
上述sql如果用乙個criteria是這麼寫
criteria.
andgreaterthan
("id"
,3000).
andlike
("name"
,"%星%").
orlessthan
("id"
,1000).
andlike
("name"
,"%貝%"
);
而實際執行的sql是這樣的,就容易產生歧義
select
*from tb_brand where1=
1and id >
3000
and name like
'%星%'
or id <
1000
and name like
'%貝%'
所以需要使用多個criteria進行拼接 Flex DataGrid通用查詢元件
本元件需要 flex翻頁控制項 我的另一篇文章有這個元件的詳細 在進行flex程式設計時,經常會用到在datagrid中分布顯示資料,但是在每個頁面中都寫一遍查詢,顯示,控制翻頁的 既煩瑣,又不美觀,於是我就寫乙個比較通用的查詢元件。commonquerycomponent.as package c...
MySQL 通用查詢日誌
mysql中的日誌包括 錯誤日誌 二進位制日誌 通用查詢日誌 慢查詢日誌等等。這裡主要介紹下比較常用的兩個功能 通用查詢日誌和慢查詢日誌。1 通用查詢日誌 記錄建立的客戶端連線和執行的語句。2 慢查詢日誌 記錄所有執行時間超過long query time秒的所有查詢或者不使用索引的查詢 1 通用查...
通用查詢開發
通用查詢模組 開發此通用查詢模組的初衷 開發強度降低 不需要重複開發 使用者可以設定自己的查詢方案 自定義查詢方案 開發者可以自定義查詢方式 模組開發原理 根據設定的資料字典 載入資料字典的字段資訊 圖1 設定查詢的邏輯字元 圖2 使用者設定查詢資訊 使用者可以儲存設定的查詢方案 圖6 程式進行sq...