orderby 中的绑定值不适用于 NamedParameterJdbcTemplate

prd*_*rdt 5 java mysql spring jdbctemplate

SELECT * FROM `student` ORDER BY :sortName :sortDir Limit :limitFrom,:limitCount;
Run Code Online (Sandbox Code Playgroud)

代码java:

    Map<String, Object> paramMap = new HashMap<String, Object>();
    paramMap.put("sortName", "%" + sortName + "%");
            paramMap.put("sortDir", sortDir);
            paramMap.put("limitFrom", pageIndex * pageSize);
            paramMap.put("limitCount", pageSize);
    List<Student> list = (List<Student>) super.getNamedParameterJdbcTemplate().query(sqlSearch, paramMap, new StudentMapper());

protected NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
        return namedParameterJdbcTemplate;
    }
Run Code Online (Sandbox Code Playgroud)

输入是 (pageIndex, pageSize, sortName, sortDir) = (2,2,"id", "desc") 实际输出:8 9 10 11(带 id)期望值:11 10 9 8

Ali*_*ani 3

?和等占位符:param只能用于参数值,不能用于列名称、排序和分页目的。对于这些要求,您应该安全地将字符串连接在一起。