有没有办法避免使用'?'对所有列名称和值进行硬编码使用弹簧标记?
而不是将我的插入语句写为insert into TABLE_NAME (x, y, z) values(?,?,?)
,因为我要设置许多字段,而不仅仅是3.我想要这样的insert into TABLE_NAME (myobject)
。
该对象将具有列名和列值。我想用beanpropertuyrowmapper来做这件事。
答案 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。然后,您可以轻松地保留数据。
如果您确实需要使用beanpropertuyrowmapper
,请查看Spring JdbcTemplate Querying Examples