JBuilder9+Weblogic7實戰篇Entity Bean運用(二) (轉)
JBuilder9+LOGIC7實戰篇:namespace prefix = o ns = "urn:schemas--com::office" />
ENTITY BEAN的運用(二)
作者:黃 凱
E_:
五、使用 QL開發查詢
5.1 什麼是EJB QL
在關係的操作中查詢是經常使用的,主要是透過語句完成的。Entity Bean作為代表資料庫中資料的永續性也同樣需要查詢操作,即能夠找到符合某一查詢條件的Entity Bean的例項。Entity Bean的查詢操作是透過定義finder()方法完成的。對於CMP,定義finder()方法僅僅是宣告一個方法,指明finder()方法的引數,該引數通常與查詢條件中的引數對應,真正完成查詢的動作是由EJB容器完成的。EJB容器要讀取部署描述ejb-jar.xml(在*.jar/META-INF裡)中的
EJB QL的開發查詢步驟如下:
1> 在Home介面中增加finder()方法,其引數為查詢條件中用到的引數;
2> 在ejb-jar.xml檔案的
EJB QL是EJB2.0新加入的特性,它實現瞭如何在Home介面中定義各種查詢方法。它以-92為基礎,可以由容器自動編譯,這使得Entity Bean具有更高的可移植性,並且容易部署。
EJB QL語句由select、where、orderby三個子句組成,其後兩個子句是可選的。
EJB QL查詢語句舉例如下:
例1:
SELECT stu FROM Student AS stu WHERE stu.grade > 5
該查詢語句的含義是查詢grade>5的Student Bean例項。“Student”是抽象名(Abstract schema name),在ejb-jar.xml檔案中
例2:
SELECT i FROM Student As i WHERE i.name = ?1
該查詢語句的含義是查詢名字與finder()方法中的第一個引數相同的Student Bean例項。
WHERE字句的使用說明:
★ 以?n代表相應的finder()方法的輸入引數;
★ 字串型別的值要用單引號括起來(如果值中有單引號,則用雙引號代替)
WHERE語句中可以使用的表示式和運算子如下:
☆ +,-,*,/,=,=,>,<>,NOT,AND,OR
☆ between
☆ like
☆ in
☆ member of
☆ is null(is not null)
內建:
● CONCAT(String first,String second)
● SUBSTRING(String ,int start,int length)
● LOCATE(String source,String patter)
● LENGTH(String source)
5.2 查詢方法開發例項
5.2.1 開啟《Entity Bean的運用(一)》中建立的comSample工程。雙擊工程視窗中cmpSample.jpx/Cmp,在文件視窗的EJB Designer中用滑鼠右鍵單擊Student項,選擇Add/Finder選單項,建立一個finder()方法。
5.2.2 設定finder()方法的各種引數。
★ Finder Name: finyName (finder()方法的名字)
★ Return type: StudentRemote(返回物件的型別)
★ Input parameter: .lang.String name (輸入引數)
★ Query: SELECT i FROM Student As i WHERE i.stuname = ?1(完成該查詢的EJB QL語句)
5.2.3 檢視Student Entity Bean的Home介面(StudentHome.java)會發現增加了一個finder()方法,該方法的定義如下:
public Student findByName(String name) throws FinderException;
5.2.4右鍵單擊工程視窗中cmpSample.jpx/Cmp,選擇Rebuild命令重新打包。
5.2.5 啟動Weblogic Server,然後右鍵單擊工程視窗中cmpSample.jpx/Cmp,選擇Deploy Options for "Cmp.jar"/Redeploy命令重新部署。
5.2.6 透過EJB Test Client Wizard新建一個客戶端StudentTestClient2.java,因為EJB已經改變了,所以不能用先前建立的客戶端程式。修改main()方法如下:
public static void main(String[] args)
{
StudentTestClient2 client = new StudentTestClient2();
client.studentRemote = client.findByName("student2");
System.out.println("The student2's id is " + client.getStuid());
}
該方法中透過findByName()方法查詢名字為student2的Entity Bean例項,然後輸出該Entity Bean對應的stuid值。
5.2.7 執行客戶端程式,驗證結果。
為了簡單,僅使用了一個引數,並且返回的是一個Bean例項。如果查詢的結果不唯一,那麼需要設定返回值為一個集合(Collection)。
參考
電子工業出版社 《應用開發(Jbuilder+Weblogic)》
我的文章首發牛耳論壇()和程式設計師論壇(/" target=_blank>),歡迎轉載,不過,請保留作者以及修訂者的名字,謝謝。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-963530/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ItemDecoration深入解析與實戰(二)—— 實際運用
- app實戰運用APP
- SpringCloud-OAuth2(二):實戰篇SpringGCCloudOAuth
- 「實戰篇」開源專案docker化運維部署-原始碼介紹(二)Docker運維原始碼
- 《python運維和開發實戰-高階篇》視訊課程筆記二Python運維筆記
- Flutter完整開發實戰詳解(二、快速開發實戰篇)Flutter
- 自定義View事件篇進階篇(二)-自定義NestedScrolling實戰View事件
- 「實戰篇」開源專案docker化運維部署(終結篇)(11)Docker運維
- 實戰|教你用Python玩轉MysqlPythonMySql
- Gradle系列-運用篇Gradle
- channel 實戰應用,這篇就夠了!
- python:實戰篇Python
- Flutter完整開發實戰詳解(二、 快速開發實戰篇) | 掘金技術徵文Flutter
- LLM應用實戰:當KBQA整合LLM(二)
- Spring Boot Serverless 實戰系列“部署篇” | Mall 應用Spring BootServer
- 資料分析從零開始實戰 | 基礎篇(二)
- Sentinel 實戰-限流篇
- Spring裝配Bean(二)SpringBean
- 二、Spring裝配BeanSpringBean
- 實戰篇——CSRF漏洞pikachu靶場實戰
- Spring Boot 揭祕與實戰(二) 資料儲存篇 – MongoDBSpring BootMongoDB
- Ceres Solver: 高效的非線性優化庫(二)實戰篇優化
- Spring Boot 揭祕與實戰(二) 資料儲存篇 – MySQLSpring BootMySql
- SSH原理與運用(二)
- webpack實戰(二):真實專案中應用系統配置Web
- DDD實戰課(實戰篇)--學習筆記筆記
- 【轉】微服務實戰微服務
- Maven實戰與原理分析(二):maven實戰Maven
- SpringBoot整合RabbitMQ之典型應用場景實戰二Spring BootMQ
- Spring Boot 揭祕與實戰(二) 資料儲存篇 – MyBatis整合Spring BootMyBatis
- Sentinel 實戰-控制檯篇
- python基礎篇實戰Python
- Linux 企業實戰篇Linux
- 玩轉 Codeigniter 框架 二 守護程式篇框架
- Spring Boot 揭祕與實戰(七) 實用技術篇 – FreeMarker 模板引擎Spring Boot
- shiro實戰系列(二)之入門實戰續
- 「實戰篇」開源專案docker化運維部署-搭建mysql叢集(四)Docker運維MySql
- 《python運維和開發實戰-高階篇》視訊課程筆記Python運維筆記
- 死磕Spring之IoC篇 - @Bean 等註解的實現原理SpringBean