【问题标题】:Can apache-commons-dbutils covert beans to an SQL statement?apache-commons-dbutils 可以将 bean 转换为 SQL 语句吗?
【发布时间】:2016-01-23 00:04:29
【问题描述】:

作为 Servlet 编程的新手,我想我可能没有在这里得到一些东西:我了解 Java Bean 的概念和像 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]);

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

【问题讨论】:

    标签: java mysql apache-commons-dbutils


    【解决方案1】:

    您没有弄错,您仍然需要一个硬编码的 SQL 字符串,如 this answer 所示。 Sql2o 还需要一个硬编码的 SQL 字符串,但它可以让你绑定一个 POJO,让你走到一半,见here(页面底部)。

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

    【讨论】:

    • 谢谢!我只是认为,如果 POJO 类的“columnname = parametername”以一种方式与ResultSetHandler 类一起工作,那么反过来使用同样的东西应该不会太难......它只是不是“性感” 硬编码它......但是你又提到了人们必须考虑的所有 SQL 可能性......那么让我们硬编码它:)
    • 顺便说一句,模型绑定很好,就我的技能水平而言,它会做到的!
    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    相关资源
    最近更新 更多