原创 巧用 INSTR 对 IN 查询排序

有时我们需要用到 in 进行批量查询,
但是使用in时 返回的结果是无序的
但是有时我们又想要 查出来的数据按照一定的排列方式出来,
比如 按照in() 数组的顺序,怎么破

sql 处理

Select id,name,content 
FROM essay 
Where id IN (1,2,3,4)
ORDER BY INSTR('1,2,3,4',id)

java 处理

// 按照顺序构建 essayIds 集合
List<Integer> essayIds = new ArrayList<>();

List<Essay> essayList = essayApi.getEssayListByIds(essayIds);
Map<Integer,Essay> essayMap = new HashMap<>();
if(CollectionUtils.isNotEmpty(essayList)){
    for(Essay essay : essayList){
        lessonMap.put(essay.getId(),essay);
    }
}

// 按照顺序取出相对应的对象放入新的集合中
List<Lesson> newLessonList = new ArrayList<>();
for(Integer id : lessonIds){
    newLessonList.add(lessonMap.get(id));
}
本文为 Laysonx 原创 文章,转载无需和我联系,但请注明来自 李鑫的杂货铺 或 李鑫博客