gpt4 book ai didi

java - 使用 MapSqlParameterSource 在 Spring MVC 中进行 Order by 子句查询

转载 作者:行者123 更新时间:2023-11-30 02:05:32 35 4
gpt4 key购买 nike

我正在尝试在 Spring MVC 4 中使用 order by 子句进行 SQL 查询。但这不起作用。我正在使用 MapSQLParameterSource 类来定义 sql 参数。

    MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("lowerLimit", lowerLimit);
params.addValue("upperLimit", upperLimit);
params.addValue("filter", filter.trim()+"%");
params.addValue("order", order);
String sql = "SELECT * FROM tbl_Subject WHERE subjectName LIKE :filter ORDER BY :order limit :lowerLimit, :upperLimit";

它实际上不起作用。不排序任何列。当我尝试硬编码时,它作为方面工作得很好。

String sql = "SELECT * FROM tbl_Subject WHERE subjectName LIKE :filter ORDER BY subjectId DESC limit :lowerLimit, :upperLimit";

如何使用 MapSqlParameterSource 进行 Order by 子句查询。

最佳答案

问题出在这一行:

params.addValue("order", order);//consider this return col_name

这将被翻译为:

.. ORDER BY 'col_name' limit ..
^ ^

这是一个错误的语法,从逻辑上讲,在 ORDER BY 之后,您必须传递列名称,而不是值

.. ORDER BY col_name limit ..
^^^^^^^^
<小时/>

相反,您必须直接将其传递给查询,但要小心传递正确的名称,如果传递错误的输入,这可能会导致语法错误或 SQL 注入(inject)

关于java - 使用 MapSqlParameterSource 在 Spring MVC 中进行 Order by 子句查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51516934/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com