mybatis使用in关键字,查询结果乱序问题(已解决)

最近在使用mybatis操作数据库时,发现一个很头疼的问题;传入一个List集合参数,里面存放有需要数据查询的各个id值,但是查询之后返回的结果集,并不和List集合里的id顺序保持一致(略显尴尬 @_@!! ),后来网上翻阅很多资料,最终解决了这一个问题,详情如下:

问题sql:

SELECT t.* FROM t_user t WHERE t.id in (1,3,5,7,9);

以上sql语句执行后返回的数据是按照1,3,5,7,9排序,但是将数据装入List返回控制层之后,打印的就并非1,3,5,7,9的顺序,而是一个乱序集合。

现使用mysql的自定义排序语法[order by field(value,params1,params2,params3.....)] 可解决此问题,自定义排序语法这里不再做赘述。

修改后的sql:

SELECT t.* FROM t_user t WHERE t.id in (1,3,5,7,9) order by field (t.id,1,3,5,7,9);

此时将sql执行后的结果返回控制层之后,遍历List集合即可得到1,3,5,7,9这样的排序数据,和传入的List参数顺序一致。

完整的mybatis查询语句:

 

 

你可能感兴趣的:(mybatis)