You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Stream将实体列表转换为SqlParameterSource数组?

使用Stream简化SqlParameterSource数组生成

当然可以用Stream来简化这个转换,代码会更简洁易读,还能避免手动管理数组索引的麻烦。

优化后的Stream实现代码

final Long treeId = tree.getId();
final SqlParameterSource[] fruitParameters = tree.getFruits()
    .stream()
    .map(fruit -> new MapSqlParameterSource()
        .addValue("fruit_id", fruit.getId())
        .addValue("tree_id", treeId))
    .toArray(SqlParameterSource[]::new);

关键说明

  • 先提取tree.getId()到变量中,避免在Stream的map操作里重复调用(虽不影响功能,但更严谨)
  • 通过stream()将List转为流,再用map操作把每个Fruit对象转换成对应的MapSqlParameterSource实例
  • 最后用toArray(SqlParameterSource[]::new)直接生成目标类型数组,无需手动初始化数组和赋值索引

补充:原代码的小问题

原代码里的循环条件i < fruitIds.length存在错误——代码中并未定义fruitIds变量,正确的条件应该是i < fruits.size(),而用Stream可以完全规避这类索引相关的失误。

内容的提问来源于stack exchange,提问作者MikelAlejoBR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:26:03