插入表中,避免使用spring对列名进行硬编码

时间:2014-02-12 01:48:15

标签: sql spring jdbctemplate

有没有办法避免使用'?'对所有列名称和值进行硬编码使用弹簧标记? 而不是将我的插入语句写为insert into TABLE_NAME (x, y, z) values(?,?,?),因为我要设置许多字段,而不仅仅是3.我想要这样的insert into TABLE_NAME (myobject)。 该对象将具有列名和列值。我想用beanpropertuyrowmapper来做这件事。

2 个答案:

答案 0 :(得分:1)

除非你像JPA一样使用JPA,否则我认为你不会去除对列名进行硬编码。如果在多个查询中使用相同的列,则可以选择在类中将它们创建为CONSTANT,并将它们连接到String查询。这样,您只需要在一个地方更新列名,以防它们确实经常发生变化 如果你只是想摆脱“?”您始终可以使用Springs JDBC命名参数查询。例如,

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

在您的方法中,您可以将这些值添加到Map中,

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

然后你可以使用查询和命名参数使用Springs NamedParameterJdbcTemplate进行调用。

答案 1 :(得分:0)

使用Spring JPA Data + Hibernate。然后,您可以轻松地保留数据。

查看Accessing Data with JPA

如果您确实需要使用beanpropertuyrowmapper,请查看Spring JdbcTemplate Querying Examples