JS 的SQL风格数据处理的API

博客首页 » JS 的SQL风格数据处理的API

发布于 22 Jun 2014 15:37
标签 blog
数据处理API的简洁的易用性与丰富的功能性一直是一个对TradeOff。最近看到API启发,通过实现类似sql的语法,可以使得开发者学习曲线平缓,同时具备多年验证过的SQL的强大处理能力。

不多废话,通过一个例子来TDD试说明这个API

//通过Factory构造,可以包含更多的设计如类似Hibernate session
var q = QueryFactory.create();
 
//链式构造类似jQuery选择器
q
//prototype的select函数产生选择列表,
//问题:javascript如何在方法不存在时,异常捕获来替换成动态自定义方法。
//如果不能实现,只能把所有的列都预定义,这样成本太高
.select(q.t1.id.as(id1), q.count(q.t2.id.as(id2))) 
.from(q.t1, q.t2)
.where(q.t1.t2_id, "=", q.t2.id)
.and(q.t1.id, ">", 0)
.groupBy(g.t1.id)
.orderBy(g.t1.id)
.go(); //最终使用go来延迟执行
 
// bind变量
int idValue;
var q = $.query(function() { return $
.select ($("t1.id").as("id1"), $.count("t2.id2").as("id2"))
.from($("tab1").as("t1"), $("tab2").as("t2"))
.where($.and(
  $.eq($("t1.t2_id"),$("t2.id")),
  $.eq($("t1.id"),idValue)) //利用闭包绑定变量
.groupBy($("t1.id"))
.orderBy($("t1.id"))
});
q.go();
 
//通过dict把可以去掉一部分引号,不过效果依然不好
.select({id1:"t1.id", id2:q.count("t2.id")) 
.from({t1:"t1", t2:"t2", t3:"t3"})
.where({t1.id: "=", t2.id: ""))
.groupBy("t1.id")
.orderBy("t1.id")
.go();

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用,仅有一个特殊要求,请用链接方式注明文章引用出处及作者。请协助维护作者合法权益。


系列文章

文章列表

  • JS 的SQL风格数据处理的API

这篇文章对你有帮助吗,投个票吧?

rating: 0+x

留下你的评论

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License