使用 Spring 以编程方式创建 SQL 语句
我需要以编程方式创建 SQL 语句。我在地图中有 <"column_name",value> 形式的值。现在我有一个基本查询,我添加一个 where 子句并在迭代地图时,如果值不为空,我添加此 " " + key + "=" + value + " 和 "。然后我剪掉了他最后5个字符,就完成了。我想使用比这更好的东西。请注意,我使用的是 Tapestry 5 + Spring JDBC 模板(Hibernate 不是一个选项)。
谢谢,翁德雷
I need to create SQL statement programmatically. I have values in map in form <"column_name",value>. Now I have a base query, I add a where clause and as iterating through the map, if the value is not null I add this " " + key + "=" + value + " and ". Then I cut he last 5 characters and it's done. I would like to use something better than this. Note that I'm using Tapestry 5 + Spring JDBC Template (Hibernate is not an option).
Thanks, Ondrej
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您需要使用动态条件,我仍然建议使用
?
生成where
,然后再次迭代以调用
preparedStatement.setXXX
。根据驱动程序,您可以调用setObject
或检查参数类型:使用
?
有它的优点:Date
这样的类型字符串和特殊符号的引用。?
而不是文字值时,数据库可以更有效地缓存执行计划。If you need to use dynamic condition I still recommend to generate
where
with?
likeand then iterate again to call
preparedStatement.setXXX
. Depending on the driver you can callsetObject
or check parameter type:Using
?
have it's advantages:Date
to string and quoting of special symbols.?
and not literal values.看来您正在寻找类似 squiggle-sql 的东西。
并且不要忘记带有“set”方法的准备好的语句。
It seems like you are looking for simething like squiggle-sql.
And do not forget about prepared statements with it's 'set' methods.
您需要使用类PreparedStatementCreator
参考:http://static。 springsource.org/spring/docs/2.0.x/reference/jdbc.html
参见部分:11.2.8
You need to use the class PreparedStatementCreator
Reference: http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html
See section: 11.2.8