apache-commons-dbutils 可以将 bean 转换为 SQL 语句吗?
Posted
技术标签:
【中文标题】apache-commons-dbutils 可以将 bean 转换为 SQL 语句吗?【英文标题】:Can apache-commons-dbutils covert beans to an SQL statement? 【发布时间】:2016-01-23 00:04:29 【问题描述】:作为 Servlet 编程的新手,我想我可能没有在这里得到一些东西:我了解 Java Bean 的概念和像 org.apache.commons.dbutils.DbUtils
这样的小 ORM 辅助类。我可以使用ResultSetHandler
和BeanHandler
将ResultSet
转换为我的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]);
至少,我没有找到类似的东西!还是我弄错了?帮助表示赞赏。
【问题讨论】:
【参考方案1】:您没有弄错,您仍然需要一个硬编码的 SQL 字符串,如 this answer 所示。 Sql2o 还需要一个硬编码的 SQL 字符串,但它可以让你绑定一个 POJO,让你走到一半,见here(页面底部)。
我认为您总是需要某种形式的硬编码 SQL 字符串,因为这些是 JDBC 帮助程序库而不是“对象关系映射器”。在插入完成之前,不知道哪些属性是自动生成的、具有默认值、是外键、允许空值等。所有这些信息都是基于 POJO 准备适当的插入语句所必需的/ JavaBean 超出了帮助程序库的范围。从好的方面来说:指定 SQL 字符串是明确的(幕后没有魔法),让您完全控制。
【讨论】:
谢谢!我只是认为,如果 POJO 类的“columnname = parametername”以一种方式与ResultSetHandler
类一起工作,那么反过来使用同样的东西应该不会太难......它只是不是“性感” 硬编码它......但是你又提到了人们必须考虑的所有 SQL 可能性......那么让我们硬编码它:)
顺便说一句,模型绑定很好,就我的技能水平而言,它会做到的!以上是关于apache-commons-dbutils 可以将 bean 转换为 SQL 语句吗?的主要内容,如果未能解决你的问题,请参考以下文章
应用服务器,可以调用脚本,可以操作数据库,可以处理文件,可以远程协同