我目前有这个:
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;
有更好的方法吗?
最佳答案
你必须使用第二种方式。准备好的语句不仅仅是“用我传递的字符串查询替换占位符”。所有参数都必须输入值才能插入到查询生成的语法树中。您不能将查询的一部分作为参数传递。
关于java - 使用 jdbctemplate 构建 sql 字符串的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965421/