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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值