由于不使用NamedParameterJdbcTemplate而按顺序绑定值

时间:2016-01-13 07:41:00

标签: java mysql spring jdbctemplate

SELECT * FROM `student` ORDER BY :sortName :sortDir Limit :limitFrom,:limitCount;

代码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;
    }

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

1 个答案:

答案 0 :(得分:2)

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