编写sql语句的Java库?

编写sql语句的Java库?,java,sql,code-generation,Java,Sql,Code Generation,是否存在可以创建sql语句的java库? 我不是在寻找新奇的东西,只是在“字符串操作”级别:我只是使用jdbc(带有PrepareStatement和ResultSet),但我真的不喜欢传递包含SQL代码的巨大字符串 我需要的是一个“简单”的选择类(或类似的);在我看来,我真正想要的就是能够做到 SQLStatement stat = Select("*").from("table").where("condition and condition").orderby("something");

是否存在可以创建sql语句的java库? 我不是在寻找新奇的东西,只是在“字符串操作”级别:我只是使用jdbc(带有PrepareStatement和ResultSet),但我真的不喜欢传递包含SQL代码的巨大字符串

我需要的是一个“简单”的选择类(或类似的);在我看来,我真正想要的就是能够做到

SQLStatement stat = Select("*").from("table").where("condition and condition").orderby("something");
ResultSet rs = Connection.getResultSet(stat.toString());
/* equals to "select * from table where condition and condition order by something" */
也许我是瞎子,但我找不到那样的东西

显然,我希望一些方法/类能够编写
insert
s和
update
s以及其他东西

我排除ORMs有两个原因:

  • db模式是“旧”的,我无法更改它,我不确定如何调整ORM以遵循我们的db
  • 假设ORMs需要更改模型(可能添加基类,可能需要实现接口),而我的项目中的模型又大又旧,而且脾气暴躁
  • 首先,我真的不喜欢ORMs:对象和集合论不是用来映射的(IMHO)

  • Hibernate很可能是您正在寻找的。它包含许多高级特性,但SQL语句更简单

    看看他们的网站:

    我还建议浏览本指南:

    ORM(对象关系映射)库就是线索

    冬眠是最成熟的一种


    Hibernate-s Criteria API是一种面向对象的方法,可以按照您的意愿创建这样的查询

    我不确定您是将Java用于本机应用程序还是web。 如果您使用java来处理Web,您可以考虑使用.< /p> 很容易,而且Hibernate包含在一个非常简单的实现中(当您自己实现Hibernate时更容易)。

    试试project。老实说,我没有用过这个。看看他们的文件,我想这可能符合你的要求


    您还可以尝试在Sourceforge、Google code等中找到类似的API。

    为什么不使用ORM?因为这是不存在的原因,可能有两个方面:a.)用有意义的方法名替换字符串连接并没有多大好处;b.)首先不应该使用字符串操作(特别是where条件)构建完整选择。有趣的是,上周我也有同样的想法!:)由于
    SELECT、INSERT、UPDATE、DELETE语句可能因您使用的数据库服务器而异。因此,如果没有方言,很难使用它。在Java中,最常见的实用程序是Hibernate,它具有所有这些函数和更多功能。@Joachim Sauer我总是忘记语句的精确语法(我不经常在这个级别上讲),IDE根本无法解析字符串,所以我在运行时发现语法问题(是的,我确实使用unittest,但每次我发现一个错误,它总是像“SLECT”或“WERE”这样的输入错误)我支持这个答案。Hibernate可能正是您想要的。它将所有数据库表和关系映射为Java类,您可以通过std Java方式通过方法调用方便地使用这些Java类,而不是将大量sql代码包含到您的程序中。+1.Hibernate
    Criteria
    允许您编写如下查询:
    createCriteria(Stuff.class).add(Restrictions.eq(“property”,propValue)).addOrder(Order.asc(“name”)).list()
    Hmm,我正在浏览
    标准
    文档,这似乎是我想要的……只是……他们为什么不使用类似于SQL的API?@Vito:他们确实支持HQL,这有点类似于SQL,但以编程方式构建标准具有您上面提到的所有优点。