加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:18:55 所属栏目:Java 来源:网络整理
导读:我在用着 jdbcTemplate来使JDBC连接到一个mySQL数据库 准备好的语句,尽可能保护自己免受SQL注入攻击 需要接受用户对十几个不同列中的数据进行排序的请求 以下语句 jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?",colName,sortOrder); 当然这不起作
我在用着

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

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

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读