对象查询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

你可能感兴趣的:(java,sql,Date,数据库,String,query)