【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
我的方法接受一个 List<Integer> 参数,该列表包含对象id的序列,例如 8,1,2,3,5 ,方法体中我对这些 id 到数据库查到相应的对象XXBean ,为了降低SQL查询的次数,我使用了
SELECT * FROM xxxx WHERE id IN (?,?,?,?,?)
这样的语句一次性查出所有的对象,该查询返回 XXBean 的对象列表,但其顺序却跟我的 List<Integer> 里的id 顺序不同。
有什么方法可以保证传入的 List<Integer> 与结果中的 List<XXBean> 的顺序是一致的呢?
这问题很简单
假设 List<Integer> 参数名为 i_list
在方法体内先构造一个跟 List<Integer> 大小一样的 List<XXBean> 对象 beans
然后执行查询,再依次读取每个 XXBean 根据其 id 值取得该对象在 List<Integer> 中的位置,假设该位置值是 pos,然后调用 beans.set(pos, obj);
可以先找出来用select ...in 找出你要的那些列,然后对你给定的list<integer>来排序。这样就可以降低SQL查询次数