我一直想知道是否有任何代码能够以某种对象树的形式表示SQL,这些对象树可以被组装,修改然后最终呈现为有效的SQL?
在我的头顶,它可能看起来像那样......
var stmnt = new Statement(); stmnt .AddMaster("Customer") .Show("Firstname, "Lastname") .AddJoin("Address", "ID", "CustomerID") .Show("Street", "City"); stmnt.WhereStatement() .AddParameter("Address.City", Op.Equal); string sql = stmnt.Generate(); // select a.FirstName, a.LastName, b.Street, b.City // from Customer a // join Address b on b.CustomerID = a.ID // where b.City = :p1
这只是一个例子,那里的东西可能完全不同,但是,是的,我很想听到那方面的内容.
更新:
我知道使用ORM技术从数据库中获取结果的众多可能性,但我正在使用SQL本身的模型.我知道抽象级别非常低,但它可能允许多个协作者可以处理SQL语句(多个连接,多个连接)的情况,然后可以在构建阶段结束时"呈现".
Hibernate有自己的Hibernate查询语言(HQL),它将类似SQL的结构表示为对象.