對象查詢JoSQL介紹

http://josql.sourceforge.net/


在一個大集合中過濾獲取其中部分數據是很常見的需求,我們可以通過JoSQL查詢來實現。

舉例:

Query q = new Query();  
q.parse("select * from ExchangeRate where fromCurrency = :fromCurrency and toCurrency = :toCurrency and fromDate <= :when and thruDate >= :when");  
q.setVariable("fromCurrency", fromCurrency);  
q.setVariable("toCurrency", toCurrency);  
q.setVariable("when", date);  
return q.execute(getAllExchangeRates()).getResults().get(0).getRate();  

和SQL的查詢方式非常類似,這只是一個JoSQL最簡單的功能,在它的文檔裏http://josql.sourceforge.net/manual/examples.html中還可以看到Order,Grouping,Execute On等特性。


JoSQL(SQL for Java Objects)爲Java開發者提供運用SQL語句來操作Java對象集的能力.利用JoSQL可以像操作數據庫中的數據一樣對任何Java對象集進行查詢,排序,分組。比如要查找所有在2004年12月修改過的Html文件:

加個應用的例子:

 List<String> names=new ArrayList<String>();
	String[] n={"Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David" };
	Collections.addAll(names, n);
	Query q=new Query();
	List<String> results = null;
	try {
		q.parse("select * from java.lang.String where length=5");
		results = (List<String>)q.execute(names).getResults();
	} catch (QueryParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (QueryExecutionException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		}
	for(String name:results) {
		System.out.println(name);
	}		


補充:java.lang.NoClassDefFoundError: com/gentlyweb/utils/Getter
 at org.josql.expressions.Accessor.init(Accessor.java:55)
 at org.josql.expressions.SelectItemExpression.init(SelectItemExpression.java:71)
 at org.josql.Query.initSelect(Query.java:2485)
 at org.josql.Query.init(Query.java:2410)
 at org.josql.Query.parse(Query.java:2337)
 at jUnit.TestUnit2.testJoSQL02(TestUnit2.java:110)
 at jUnit.TestUnit2.testUnit01(TestUnit2.java:134)

.............................................................

這是我在初學時遇到的問題 在網上翻閱了半天也沒找到答案,最終還是在一個英文帖子上找到了答案

原來在用JoSQL時除了需要JoSQL-2.0.jar還需要gentlyWEB-utils-1.1.jar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章