2014-02-12 47 views
1

有沒有辦法避免使用'?'對所有列名和值進行硬編碼?用彈簧標記? ,而不是將我的插入語句編寫爲insert into TABLE_NAME (x, y, z) values(?,?,?),因爲我有很多字段要設置,而不僅僅是3.我想要這樣的insert into TABLE_NAME (myobject)。 該對象將具有列名稱和列值。我想用beanpropertuyrowmapper來做到這一點。插入表格避免使用彈簧對列名進行硬編碼

回答

1

看看說我不認爲你會擺脫對列名進行硬編碼。如果您在多個查詢中使用相同的列,則可以選擇將它們創建爲類中的CONSTANT並將它們連接到字符串查詢。這將允許你只需要在一個地方更新列名,以防經常發生變化。
如果你只是想擺脫「?」您始終可以使用Springs JDBC命名參數查詢。例如,

INSERT INTO TABLE_NAME (X, Y, Z) 
VALUES (:xParam, :yParam, :zParam) 

在你的方法,你將這些值添加到地圖本身,

final SqlParameterSource namedParameters = new MapSqlParameterSource.addValue("xParam", X.getName).addValue("yParam", Y.getName).addValue("zParam", Z.getName); 

然後你會作出使用彈簧NamedParameterJdbcTemplate使用查詢和namedparameters通話。

相關問題