JDO:查詢你的資料 (轉)
JDO學習筆記(一)
:namespace prefix = o ns = "urn:schemas--com::office" />
查詢你的資料
在JDO 中和查詢相關密切的有兩個介面(它們的具體實現由JDO產品來完成):
.jdo.Query
========================
該介面的例項是由另一個介面PersistenceManager來建立的,在JDO中PersistenceManager是一個比較重要的介面,我們所有的事務處理都是透過該介面來定義的。
PersistenceManager介面有一組newQuery方法來產生Query的例項:
public Query newQuery()
public Query newQuery(java.lang.Class cls
)
public Query newQuery(java.lang.Class cls, java.util.Collection cln
)
public Query newQuery(java.lang.Class cls,
java.util.Collection cln,
java.lang.String filter
)
public Query newQuery(java.lang.Class cls, java.lang.String filter
)
public Query newQuery(Extent cln
)
public Query newQuery(Extent cln, java.lang.String filter
)
public Query newQuery(java.lang. compiled
)
public Query newQuery(java.lang.String language, java.lang.Object query
)
有查詢就要有返回結果,Query介面裡一組execute方法來返回查詢的結果:
public Object execute()
public Object execute(java.lang.Object p1
)
public Object execute(java.lang.Object p1, java.lang.Object p2
)
public Object execute(java.lang.Object p1,
java.lang.Object p2,
java.lang.Object p3
)
通常我不用上邊的方法,特別是在綜合查詢的時候,我比較喜歡下面兩個方法來返回查詢結果:
public Object
excuteWithArray(java.lang.Object[] parameters)
public Object excuteWithMap(java.util.Map parameters)
當然如果是非常簡單條件的查詢,上邊四種方法可以搞定就不要用後兩種方法,後兩種方法要自己構造陣列或者集合。
個人認為上述查詢方式跟java..
PreparedStatement差不多都是要為指定的“引數”賦值;如p1,p2,p3,array啦,map啦其中存放的都是前面需要指定的引數的值,跟PreparedStatement它們的順序要和定義引數的順序一樣。
要注意的是
l Array引數集合中陣列的順序很定義引數的順序要一致。
l Map引數集合中的key為引數的名稱,value為引數的值
上邊已經開始提及帶引數的查詢了,是的,Query介面中定義了引入引數的方法:
public void declareParameters(java.lang.String parameters)
如果事多了引數的情況要用逗號隔開。
JDO的查詢方式不光可以引入引數,同時可以引入變數以及其他的類,下面分別是引入變數和引入類的方法,其語法和一般JAVA語法沒什麼差別:
引入變數,當引入多個變數的時候中間用分號隔開
public void declareVariables(java.lang.String
variables)
例子:public void declareVariables(“Student students;Teacher teacher1”);
引入類,當引入多個類的時候,跟字串的連線方式差不多,不好說明,看例子吧:
public void declareImports(java.lang.String
imports)
例子:public void declareImports(“import java.util.Date;”+”import com.yourname.Student”);
既然查詢就要存在查詢條件,Query介面定義了過濾條件的方法:serFilter()
public void setFilter(java.lang.String filter)
filter的寫法跟sql中where語句中的條件寫法思想應該一樣的,如查詢條件為:找出學生中姓李的,那麼寫法如下:
query.setFilter(“name.startsWith(startname)”);
並同時找出性別等於女的,寫法改為:
query.setFilter(“name.startsWith(startname) && sex==it_sex”);
JDO中關於字串的操作,我怎麼只見startsWith和endsWith啊,這樣的話如何對字串進行更模糊的查詢啊?望指教?
JDO查詢中同樣也提供了排序方法,setOrdering 如下:
Public void setOrdering(java.lang.String ordering)
如按照學生的年齡排序:
query.setOrdering(“age ascending”); 升序
query.setOrdering(“age descending”);降序
如果多個排序條件,如按年齡的大小,身高的高低:
query.setOrdering(“age ascending,”+” stature descending”);
java.jdo.Extend
========================
該介面的例項代表當前中存在的所有的類。它也是由介面PersistenceManager來建立的,如下:
public Extent getExtent(Class persistenceCapableClass, boolean subclasses)
引數subclass的真假表示含有第一個引數類的子類:真,表示包括子類;假,不包括子類。
可能有兩個地方要用到Extend例項
l 得到特定持久類的一個集合。
l 針對資料庫中所有特定持久類進行查詢
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-960834/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫資料的查詢----連線查詢資料庫
- /*列轉行查詢表資料*/
- 帶你玩玩轉 MySQL 查詢MySql
- 面試官:一千萬的資料,你是怎麼查詢的?面試
- 回閃查詢查詢刪除的資料
- Flask——資料的查詢Flask
- MySQL - 資料查詢 - 簡單查詢MySql
- B樹查詢,磁碟查詢資料
- 提高ORACLE資料庫的查詢統計速度(轉)Oracle資料庫
- (轉)Oracle常用資料字典查詢語句Oracle
- oracle 資料分頁查詢 (轉貼收集)Oracle
- [轉] 連線資料庫查詢手冊資料庫
- Excel資料庫轉MySQL,實現查詢Excel資料庫MySql
- 資料庫 - 資料查詢資料庫
- 插入查詢資料的操作
- 查詢前50%的資料
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- 資料庫高階查詢之子查詢資料庫
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- indexedDB 查詢資料Index
- RESTFul資料查詢REST
- MySQL資料查詢MySql
- EF 查詢資料
- myGeneration——查詢資料
- 資料庫查詢資料庫
- MYSQL查詢資料MySql
- AMS 資料查詢
- Oracle中對兩個資料表交集的查詢(轉)Oracle
- 一個JDO的成功案例分析 (轉)
- 資料庫基礎查詢--單表查詢資料庫
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- 查詢資料庫的資料量的大小資料庫
- 關於樹型結構資料遞迴查詢,轉非遞迴查詢的實現遞迴
- Prometheus時序資料庫-資料的查詢Prometheus資料庫
- 你應該瞭解的流行圖資料庫查詢語言資料庫
- 查詢你的資料庫有沒有被木馬注入的可能!資料庫