apache-commons-dbutils 可以将 beans 转换为 SQL 语句吗?

Can apache-commons-dbutils covert beans to an SQL statement?

作为 Servlet 编程的新手,我想我在这里可能没有得到正确的东西:我理解 Java Beans 和像 org.apache.commons.dbutils.DbUtils 这样的小 ORM 助手 类 的概念。我可以使用 ResultSetHandlerBeanHandlerResultSet 转换为我的 JavaBean 对象的实例。但是,除了对 SQL 字符串进行硬编码之外,没有任何方便的方法可以反过来做吗?像

QueryRunner run = new QueryRunner(datasource);
int result = run.update("UPDATE " + tableName + " SET " + [and now some Handler sets all the columns from the JavaBean]);

至少,我没有找到那样的东西!还是我弄错了?帮助表示赞赏。

您没看错,您仍然需要硬编码的 SQL 字符串,如 this answer. Sql2o also requires a hard-coded SQL string but it will let you bind a POJO which gets you half-way there, see here(页面底部)所示。

我认为您总是需要某种形式的硬编码 SQL 字符串,因为它们是 JDBC 帮助程序库,而不是“对象关系映射器”。在插入完成之前,不知道哪些属性是自动生成的、具有默认值、是外键、允许空值等。需要所有这些信息来准备基于 [= 的正确插入语句15=] 这超出了帮助程序库的范围。从好的方面来说:指定一个 SQL 字符串是明确的(幕后没有魔法)并且让你完全控制。