在数据库的查询中我们可以使用order by实现按某个字段升序或者降序的排序,如果是要按照一个特定的顺序排序,用order by 就不行了,例如要按照id 是2、3、1这个顺序排序,显然用升序或者降序都不行,这里就要用到集合了(unionall)
这里我们可以创建一个数组或者是list把id按照一定的顺序放入到数组或者集合中 把这个集合或者数组作为参数传递个方法
public List<Base> findHistory(List<Integer> ids){
return sql.selectList(NAMESPACE + "findHistory", ids);
}
mybatis的动态sql如下
<select id="findHistory" resultMap="recentlyBrowse">
select * from(
<foreach collection="list" item="id" index="index"
open="(" close=")" separator="union all">
select * from T_BASE where BASE_ID=#{id,jdbcType=DECIMAL}
</foreach>
)
</select>
本文介绍了一种在数据库查询中按照特定顺序对记录进行排序的方法,通过使用union all结合动态SQL来实现非升序非降序的自定义排序,适用于如按ID为2、3、1的顺序排列等需求。
5315

被折叠的 条评论
为什么被折叠?



