使用jdbctemplate构建sql字符串的建议

时间:2012-01-22 22:47:38

标签: java spring jdbctemplate

我目前有这个:

MyObject myObject = getJdbcTemplate().queryForObject("select * from my_objects where id = ?",
                new Object[]{new Integer(id)},
                new MyObjectRowMapper());

现在我的方法中我要传递一个枚举:

SortOrder.ASC
SortOrder.DESC

所以它将是:

ORDER BY ID ASC

ORDER BY ID DESC

所以在sql字符串中,我只是添加另一个'?'或者我必须建立像:

这样的字符串
"select * from abc ORDER BY ID " + sortOrder;

有首选方法吗?

2 个答案:

答案 0 :(得分:2)

你必须使用第二种方式。准备好的语句不仅仅是“我传递的字符串的查询替换占位符”。所有参数都必须是要键入的值,以插入从查询生成的语法树中。您不能将查询的一部分作为参数传递。

答案 1 :(得分:0)

您无法在PreparedStatements中更改查询,因此无法使用?适用于ascdesc。我认为连接是你可以使用的最简单的方法。