最初に 100 件のレコードがあると仮定して、ユーザーのリストとして UI に表示したという問題があります。ここで、すべてのレコードに対して配置された「非アクティブ化」ボタンをクリックして、number ユーザーを非アクティブ化する規定を与えました。次に、「非アクティブ化」されたすべてのユーザーをリストに取り込み、DAO レイヤーに送信します。[ユーザーを非アクティブ化するロジック'isDeleted' フラグを true に設定するだけです。iesoft delete そのため、ID をリストに配置した複数のレコードを更新するのと同じくらい良いです], for ループを記述して、 list-> および各レコードに対してクエリを実行して isDeleted フラグを true に更新しますが、一度に 5000 レコードを削除する必要がある場合、その解決策は実行できません。「挿入」のbatchUpdateの概念を聞いて実装しました複数のレコードを一度に. バッチ更新を使用して 1 回の DB 呼び出しで複数のレコードを更新する方法がわかりません. 助けてください. 挿入用のバッチ更新コードは次のとおりです.
private static final String INSERT_USER_PERMISSION =
"INSERT INTO permission_transaction(permissionId,userId,isDeleted) "
+ "VALUES(?,?,?)";
@Transactional
public void addPermission(final UserVO userVo, final List<PermissionVO> permissionVoList)
throws Exception {
logger.info("Adding user permission, for userId: "+userVo.getUserId());
try {
jdbc.batchUpdate(INSERT_USER_PERMISSION, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
PermissionVO permissionVo = permissionVoList.get(i);
ps.setInt(1, permissionVo.getPermissionId());
ps.setInt(2, userVo.getUserId());
ps.setBoolean(3, false);
}
@Override
public int getBatchSize() {
return permissionVoList.size();
}
});
logger.info("Exiting addPermission, for userId: "+userVo.getUserId());
}catch (Exception e) {
logger.error("Error in adding user permission: " + e.getMessage(), e);
throw e;
}
}