【发布时间】:2018-07-14 12:40:27
【问题描述】:
我正在编写一个带有 IN 子句的更新查询,我在其中传递了 List
update table set postcode={#postcode} where id in
<foreach collection="addresses" index="index" item="item" open="("
separator="," close=")">#{item}</foreach>
当我在地址中的记录少于 1000 条时,这运行正常。如果记录超过 1000 条,我会收到以下错误:
ORA-01795:列表中的最大表达式数为 1000。 这怎么处理?我遇到了一些他们在hibernate中处理过的线程。我如何使用具有超过1000条记录的myibatis来处理它。
【问题讨论】:
-
@MT0 这可以在 Java 端排序吗..比如检查前 1000 条记录并处理,然后再检查下 1000 条记录。它会影响性能吗?
-
为什么要检查 1000 个项目并循环?只需在单个集合中传递所有 948,732 个项目(或您拥有的许多项目)并使用绑定参数将其包含在查询中。
标签: java oracle foreach ibatis