需求:
sql使用in关键字的时候比如select name from table where id in (3,2,1)
,使用mybatis基本是把in中的id使用一个list进行传递,但是这时结果集的顺序并不是按照我们传入的顺序展示,这可能导致一些场景不是很方便.
方法:
使用order by field
指定根据哪个字段进行自定义排序
写法如下:
select name from table where id in (3,2,1) order by field(id, 3, 2, 1);
括号中第一项指定根据哪个字段,后面的字段就指定排序顺序.这样结果集就会按照3,2,1的顺序排序
Mybatis写法
select name from table
where id in
<foreach item = "id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
order by field (id,
<foreach item = "id" collection="list" separator=",">
#{id}
</foreach>
);