mybatis使⽤in关键字,查询结果乱序问题(已解决)mysql语句的执行顺序
最近在使⽤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,)] 可解决此问题,⾃定义排序语法这⾥不再做赘述。
修改后的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参数顺序⼀致。vue使用websocket
完整的mybatis查询语句:
<select id="exportUserDataByUseridList" resultMap="ResultMapWithUsers" parameterType="java.lang.String">
block可数吗SELECT t.* FROM t_user t WHERE t.id in
<foreach collection="list" index="index" item="userid" open="(" separator="," close=")">
${userid}
</foreach>nginx openssl
随机变量定义理解order by field(t.id,
linux怎么读取u盘内容<foreach collection="list" index="index" item="userid" separator="," >
${userid}
</foreach>
);
</select>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论