2015-10-23 64 views
1

作爲Servlet編程的新手,我想我可能沒有在這裏得到一些東西:我理解Java Bean和像org.apache.commons.dbutils.DbUtils這樣的小ORM幫助類的概念。我可以使用ResultSetHandlerBeanHandlerResultSet轉換爲我的JavaBean對象的實例。但是,除了對SQL字符串進行硬編碼之外,是否還有其他方便的方法可以實現呢?類似於apache-commons-dbutils可以將bean轉換爲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並超出了helper庫的範圍。在正面:指定一個SQL字符串是明確的(幕後沒有魔術),並讓你完全控制。

+0

謝謝!我只是認爲如果一個POJO類的「columnname = parametername」與ResultSetHandler類一起工作,那麼爲相反的方向做同樣的事情不應該太困難......它只是不「性感」 「對它進行硬編碼......但是後來你又提到了所有可能的SQL可能性......那麼讓我們對它進行硬編碼吧:) – cirko

+0

順便說一句,模型綁定很好,那會爲我的技能水平做好準備! – cirko