通用Mapper QBC查詢

2021-10-02 06:59:30 字數 2910 閱讀 1481

目標:

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...