用Spring jdbctemplate做排序的查出数据顺序与数据库不一致的问题

最近在项目中使用jdbctemplate的queryForList()方法查询时发现在view层获取返回的json格式数据时顺序是乱的,而在数据库中单独执行对应的查询sql却是排好序的。
开始以为是fastjson转换时导致的,后来跟踪发现在queryForList返回的List里面就已经是乱序的了。尝试过用RowMapper以及linkedList对结果集重新进行封装,发现还是不行。
最后终于找到原因了,原来是传参数的方式导致的(拼接后sql里面的排序字段有引号导致排序不正常)。
之前对sql语句中的排序字段及顺序采用问号方式传参,比如:
queryForList("select a,b,c from t where d=? order by ? ?",new Object[]{1,"a","asc"});
后来改成把order by 后面的参数直接在sql中拼好再调用就好了,比如:
queryForList("select a,b,c from t where d=? order by "+para1+"+" para2",new Object[]{1});
para1、para2为调用方法时传入的排序字段明和顺序的变参。

猜你喜欢

转载自bf1977.iteye.com/blog/2338761
今日推荐