我目前正在购买Java中的SQL构建器。我的基本愿望是这样的:
SelectBuilder sb = new SelectBuilder(source, alias); // Source can be subquery
sb.select(column1, alias1);
sb.select(column2, alias2);
sb.joinWith(joinObj, joinAlias);
sb.where(column1, operator, value)
sb.orderBy(column1, DESC)
// etc etc etc
......它确实准备了陈述
我调查了JOOQ,我的印象是它对我的品味太复杂了。我不想为我的架构设置一些xml或xsd文件。我允许的最多就是写豆子。我看过Squiggle,但它只支持SELECT而不支持其余部分。 MyBatis不够好,因为它没有完全抽象出SQL语法。我还尝试了Stack Overflow帖子推荐的其他帖子,例如this和that。
我真的不喜欢几个基于Java的SQL构建器的另一个问题是链接语法:即select()。from()。where()。etc()。etc()。etc()< / p>
无论如何,你们知道其他可能符合我要求的SQL Builders吗?我在网上搜索了两天,但还没找到任何东西。洞察力将不胜感激!!!
答案 0 :(得分:11)
我看过JOOQ,我的印象是它太令人费解了
那甚至意味着什么? :)
我不想为我的模式设置一些xml或xsd文件
您不必。您可以使用jOOQ,而不使用此处记录的代码生成器: https://www.jooq.org/doc/latest/manual/getting-started/use-cases/jooq-as-a-standalone-sql-builder
但是,如果不使用代码生成器,您将错过大量有用的功能。怎么说呢Hours of writing code manually saves seconds of setting up the code generator.
关于几个基于Java的SQL构建器,我真的不喜欢的另一件事是链接语法:即select()。from()。where()。etc()。etc()。etc()< / p>
为什么不呢?确实有帮助。但是话又说回来,您不必。 jOOQ有2个API。 DSL API(您不喜欢)和模型API。在此查看此页面: https://www.jooq.org/doc/latest/manual/sql-building/sql-statements/dsl-and-non-dsl
答案 1 :(得分:1)
看看这些:
https://github.com/ivanceras/fluent-sql
此外,Hibernate Criteria API具有流畅的界面。 根据我的经验,如果查询比从sometable中选择更复杂,那么这些流畅的api-s使得sql非常难以理解。