我们在插入时使用批处理语句如下:
BatchBindStep batch = create.batch(create
.insertInto(PERSON, ID, NAME)
.values((Integer) null, null));
for (Person p : peopleToInsert) {
batch.bind(p.getId(), p.getName());
}
batch.execute();
这在过去插入数千个对象时效果很好。但是,它提出了几个问题:
.bind()
一个批次的调用次数有上限吗?- 如果是这样,限制取决于什么?
.bind()
执行后似乎可以再次调用.execute()
。会.execute()
清除以前绑定的值吗?
澄清最后一个问题:执行以下代码后......
BatchBindStep batch = create.batch(create
.insertInto(PERSON, ID, NAME)
.values((Integer) null, null));
batch.bind(1, "A");
batch.bind(2, "B");
batch.extecute();
batch.bind(3, "C");
batch.bind(4, "D");
batch.execute();
我应该期待什么结果?
a) b)
ID NAME ID NAME
------- -------
1 A 1 A
2 B 2 B
3 C 1 A
4 D 2 B
3 C
4 D
不幸的是,Javadoc和文档都没有讨论这种特定的使用模式。
(我问这个特定的问题是因为如果我.execute()
每 1000 次绑定左右以避免上述限制,我需要知道我是否可以将batch
对象重用于多个.execute()
调用。)