这两天碰到一个让我欲哭无泪的问题!
框架用的springMvc+mybatis
问题描述 List<*> list = service.select(param).
‘相同’的sql语句查出来的结果在mysql中和eclipse中不同
需求:连接了三张表,查询结果按不同的条件来排序
方案:mapper中的sql语句是这样的 select * from () order by #{condition}
我是根据不同的条件,传过去condition
结果:查询出来的结果总不对。但是我把eclipse打印台的sql语句放到mysql中运行的结果就是对的。
mapper文件中
控制台
其中sumFbuy就是我传的condition
mysql中
然后在mysql中查询出来的结果就是对的。到了eclipse中就是错的
纠结了一天。偶然间发现问题所在,我在mysql中查询的结果是对的,但是java中得到的list就是错的。肯定就是我传的条件有问题,我就这样试了一下
激动!!!此时就是我eclipse中的错误list,我也不知道此时mysql是按什么排序的(也许根本就没排序)
问题就是这样了,因为mapper文件中配置#{condition} 此时它带到mysql中就会自动加上双引号“sumFbuy”
解决方法也很简单 将#改为$ 这样 ${condition} 传到mysql就不会带双引号了 而且控制点打印出来是这样的
它会直接带在sql语句中,而不是以占位符的形式替换
希望对大家有帮助!