我有一组对象,很想批量插入。
首先,我想到了“ for-loops”,但是后来我意识到,这对于流来说应该可行。
BatchBindStep userLoginBatch = create
.batch(
create.insertInto(USERLOGIN, USERLOGIN.USERNAME, USERLOGIN.IP, USERLOGIN.MAC, USERLOGIN.LOGIN, USERLOGIN.STATUS, USERLOGIN.APPLICATION, USERLOGIN.ENTERTAINMENT_CREDENTIALS_ID, USERLOGIN.VERSION)
.values(null, null, null, (Timestamp) null, null, null, (Integer) null, null)
);
userLoginsToPersist
.stream()
.map(login ->
Arrays.asList(login.getUsername(), login.getIp(), login.getMac(), login.getLogin(), login.getStatus(), login.getApplication(), login.getEntertainmentCredentialsId(), login.getVersion())
).reduce(userLoginBatch, (a, b) -> a.bind(b));
userLoginBatch.execute();
这是我目前拥有的,并且抱怨无法减少该对象...
最佳答案
您需要使用reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
:
userLoginsToPersist
.stream()
.map(login ->
Arrays.asList(login.getUsername(), login.getIp(), login.getMac(), login.getLogin(), login.getStatus(), login.getApplication(), login.getEntertainmentCredentialsId(), login.getVersion())
).reduce(userLoginBatch, (b, v) -> b.bind(v), (b1, b2) -> b1)
.execute();