概述
在ADF中,實現對VO查詢的方法有多種,例如:
1、Designtime時添加相應的Criteria,增加Criteria項並關聯到綁定變數,在runtime時賦值給綁定變數並實現查詢。
2、在Runtime時使用代碼動態建立Criteria和CriteriaRow,以實現查詢
3、其他
而當VO對應的主EO中已經定義了唯一性索引,此時有更為簡便的方式實現查詢,即本文中即將進行說明的使用AlternateKey進行查詢。
實現
1、建立新應用,建立資料庫連接,基於HR Schema中的employees表建立EO、VO並將VO的執行個體添加到AM中。
2、開啟EO,即Employees,在General面板中添加名為EmailAlternateKey的AlternateKey,由於employees表中有唯一性索引EMP_EMAIL_UK是基於Email欄位的,因此在EmailAlternateKey中將Email選到Seleted。
3、在EmployeesView的General面板中同樣建立名為EmailAltKey的AlternateKey,在Entity-level Alternate Key中選擇在上個步驟中建立好的EmailAltKey。
4、產生AM的實作類別,在AM中添加適當代碼,以實現查詢功能。
public Row findEmployeeByEmail(String email) {<br /> EmployeesViewImpl employeesViewImpl =(EmployeesViewImpl)this.getEmployeesView1();<br /> Key key = new Key(new Object[] { email });<br /> return employeesViewImpl.findByAltKey("EmailAltKey", key, -1, true).first();<br />}
5、在AM的Java面板中,將剛編寫完成的方法發布到Client Interface,以便下面我們使用業務組件瀏覽器進行測試。
6、在AM上點擊右鍵,選擇“Run”,使用業務組件瀏覽器進行測試。選擇到剛發布成功的方法,運行後在參數輸入框內輸入已經存在的Email,這裡為“SKING”,運行成功:)
7、為驗證AltKey使用的是資料表中的唯一性索引,開啟日誌,重新運行後將日誌中的SQL拷貝到PL/SQL Developer中的Explain Plan Window,執行後發現使用的查詢為“INDEX UNIQUE SCAN”且對應的Object Name為EMP_EMAI_UK,說明此查詢使用的確實是唯一性索引。
本文轉自Oracle Seeker:http://oracleseeker.com/2009/09/05/adf_altkey_alternatekey_query/