在 Java 中将预准备语句和变量绑定 Order By 与 JDBC 驱动程序结合使用
2022-09-01 21:00:00
我正在使用
- jdbcTemplate,用于与 mySQL DB 建立 JDBC 连接
- 准备好语句,以尽可能保护自己免受SQL注入攻击
- 需要接受来自用户的请求,以对十几个不同列中的任何一个列上的数据进行排序
-
以下语句
jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);
当然,这不起作用,因为变量绑定不应该指定列名,而应该指定查询中表达式的参数值。
所以。。。人们如何解决这个问题?只需在Java代码中进行排序似乎是一个简单的解决方案,但是由于我得到了一个变量字符串供列排序,并且一个变量告诉我排序顺序.这是一个丑陋的比较条件覆盖。这似乎应该是一个常见的问题,用一个共同的模式来解决它......