我目前有这个:
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;
有首选方法吗?
答案 0 :(得分:2)
你必须使用第二种方式。准备好的语句不仅仅是“我传递的字符串的查询替换占位符”。所有参数都必须是要键入的值,以插入从查询生成的语法树中。您不能将查询的一部分作为参数传递。
答案 1 :(得分:0)
您无法在PreparedStatements
中更改查询,因此无法使用?适用于asc
或desc
。我认为连接是你可以使用的最简单的方法。