编写sql语句的Java库?
是否存在可以创建sql语句的java库? 我不是在寻找新奇的东西,只是在“字符串操作”级别:我只是使用jdbc(带有PrepareStatement和ResultSet),但我真的不喜欢传递包含SQL代码的巨大字符串 我需要的是一个“简单”的选择类(或类似的);在我看来,我真正想要的就是能够做到编写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");
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有两个原因:
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.HibernateCriteria
允许您编写如下查询:createCriteria(Stuff.class).add(Restrictions.eq(“property”,propValue)).addOrder(Order.asc(“name”)).list()
Hmm,我正在浏览标准文档,这似乎是我想要的……只是……他们为什么不使用类似于SQL的API?@Vito:他们确实支持HQL,这有点类似于SQL,但以编程方式构建标准具有您上面提到的所有优点。