emf查詢框架主要由 org.eclipse.emf.query 這個plugin提供,建立並執行乙個emf查詢,大概分為如下幾步:
1,建立查詢資料來源;
2,構造eobjectcondition查詢條件;
3,使用emf查詢框架提供的select物件和update物件編寫查詢和更新語句;
4,執行語句得到查詢或更新結果;
5,對執行結果進行檢測,確保執行過程中沒有發生異常。
emf提供了兩套query物件,select和update,分別用於模型的查詢操作和更新操作。
select物件的類圖關係如下:
類似sql語句的from和where從句,select物件的構建需要from和where兩個物件,分別代表查詢範圍和查詢約束條件(eobjectcondition)。
除了這兩個物件之外,select物件還可能包含下引數資訊:
maximumresultsize:設定查詢的最大返回值;
cancellable:查詢是否可撤銷,預設值為true;
progressmonitor:查詢***。
構建emf select查詢**大致如下:
其中from物件的構造引數可以是單一的eobject物件,也可以是collection集合,還可能是ieobjectsource物件例項。
較為複雜的是where物件的構建,或者說是其構造引數eobjectcondition約束條件的構建。
emf查詢框架預定義很多查詢條件類繼承至eobjectcondition,然而熟練的使用這些類並不容易,
還有一種方法是通過ocl約束表示式構造 booleanoclcondition 物件,如果熟練ocl語法,用此種方式相對比較容易。
但也有不足,就是ocl的解析速度相對較慢。
構造引數中,還可以不指定約束的上下文(即第3個構造引數為null),這樣任何emf實體如果含有category屬性都會在該實體類上執行
"self.category <> bookcategory::mystery implies self.pages < 200"約束檢測。
當查詢條件比較多的時候,可以通過emf的核心查詢框架將多個查詢條件進行組合:
update物件繼承至select物件,除此之外還是用了set物件進行賦值操作:
構建emf update操作**也與select類似,只是要在構造引數中新增set物件來為實體賦值:
lucene學習筆記三 各種query
1,有時對於乙個document來說,有一些field會被頻繁地操作,而另一些field則不會。這時可以將頻繁操作的field和其他field分開存放,而在搜尋時同時檢索這兩部分field而提取出乙個完整的document。這要求兩個索引包含的document的數量必須相同。在建立索引的時候,可以同...
sql學習筆記4 多表查詢
將兩張表jion成乙個表進行查詢 如果,兩個表的列明相同,可以用using select e.fname,e.lname,d.name from employee e inner join department d using dept id ansi標準的優點是 連線條件和過濾條件被分隔到兩個字句...
PHP學習4 查詢
step 1 link mysql connect localhost root 123456 or die connect error step 2 mysql select db xsphpdb or die select db error function table tabname sql ...