使用准备好的语句和变量绑定在Java中使用JDBC驱动程序

前端之家收集整理的这篇文章主要介绍了使用准备好的语句和变量绑定在Java中使用JDBC驱动程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在用着

> jdbcTemplate来使JDBC连接到一个MysqL数据库
>准备好的语句,尽可能保护自己免受sql注入攻击
>需要接受用户对十几个不同列中的数据进行排序的请求
>以下语句

jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?",colName,sortOrder);

当然这不起作用,因为变量绑定不应该指定列名称,只是查询中表达式的参数值.

所以…人们如何解决这个问题?只是在Java代码中进行排序似乎是一个简单的解决方案,但是由于我得到一个可以排序列的变量字符串,一个变量告诉我排序顺序….这是比较器条件的丑陋数量盖.这似乎应该是解决它的常见模式的常见问题?

解决方法

占位符?只能用于参数值,但不能用于列和排序顺序方向.所以这样做的标准方法就是指出. here是使用 String#format()或类似的东西来附加您的列名称和订单值给您的查询.

另一种选择是使用Spring Data JPA,您可以在其中将参数作为参数赋予类型为Sort的实例,该实例可以包含数据库进行排序的所有必需信息.

原文链接:https://www.f2er.com/java/125777.html

猜你在找的Java相关文章