假设有2个字段要排序。 分别为字段A ,字段B ,都可以ASC DESC 
假设有这样一个SQL 语句 
SELECT * FROM XXX ORDER BY #{a1} #{b1}
参数传入 A DESC 结果运行没有排序,
假设
SELECT * FROM XXX ORDER BY ${a1} ${b1}
参数第一次运行传入
A DESC 后面每次运行都变成了
SELECT * FROM XXX ORDER BY A DESC 排序另外一个字段B的时候,实际上也就是在排序字段A的效果
<select id="getList" parameterType="hashmap" statementType="STATEMENT" >
定义了statementType="STATEMENT" 还是没有效果

解决方案 »

  1.   

    首先你应该先用log4j,将你的sql打印出来,看生成的是不是你要的sql.另外你排序的地方应该加个逗号prepend=","
    SELECT * FROM XXX ORDER BY ${a1} ,${b1}.                            
      

  2.   

    SELECT * FROM XXX ORDER BY ${a1}, ${b1}
      

  3.   


    可能我没说明白,只根据一个字段 如果加个逗号变成SELECT * FROM XXX ORDER BY A ,DESC
      

  4.   

    再说 如果是语法错误, 那数据还能查出来? 
    运行是正常的 ,我觉得是应该用${} 但是语句预编译掉了, ORDER BY 后面的不会改变,顺便再说下,我没有加缓存
      

  5.   

    SELECT * FROM XXX ORDER BY ${}用一个参数,自己拼好了order语句再传进去