List of usage examples for org.apache.ibatis.executor BatchResult getUpdateCounts
public int[] getUpdateCounts()
From source file:com.ibatis.sqlmap.BatchTest.java
License:Apache License
public void testExecutebatchDetailed() { List accountList1 = new ArrayList(); Account account = new Account(); account.setId(10);/*from w w w.j a v a 2s .c om*/ account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(11); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(12); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(13); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(14); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); List accountList2 = new ArrayList(); account = new Account(); account.setId(15); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); account = new Account(); account.setId(16); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); account = new Account(); account.setId(17); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); account = new Account(); account.setId(18); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); try { sqlMap.startTransaction(); sqlMap.startBatch(); // insert 5 accounts for (int i = 0; i < accountList1.size(); i++) { sqlMap.insert("insertAccountViaInlineParameters", accountList1.get(i)); } // update 1 account account = new Account(); account.setId(10); account.setFirstName("barney"); account.setLastName("rubble"); account.setEmailAddress("barney.rubble@gmail.com"); sqlMap.update("updateAccountViaInlineParameters", account); // insert 4 accounts for (int i = 0; i < accountList2.size(); i++) { sqlMap.insert("insertAccountViaInlineParameters", accountList2.get(i)); } List results = sqlMap.executeBatchDetailed(); sqlMap.commitTransaction(); assertEquals(3, results.size()); BatchResult br = (BatchResult) results.get(0); assertEquals(5, br.getUpdateCounts().length); br = (BatchResult) results.get(1); assertEquals(1, br.getUpdateCounts().length); br = (BatchResult) results.get(2); assertEquals(4, br.getUpdateCounts().length); } catch (BatchException e) { fail(e.getMessage()); } catch (SQLException e) { fail(e.getMessage()); } finally { try { sqlMap.endTransaction(); } catch (SQLException e) { fail(e.getMessage()); } } }
From source file:com.ibatis.sqlmap.BatchTest.java
License:Apache License
public void testExecutebatchDetailedWithError() { List accountList1 = new ArrayList(); Account account = new Account(); account.setId(10);// ww w .j av a 2 s . c o m account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(11); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(12); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(13); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); account = new Account(); account.setId(14); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList1.add(account); List accountList2 = new ArrayList(); account = new Account(); account.setId(15); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); account = new Account(); account.setId(16); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); account = new Account(); account.setId(17); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); account = new Account(); account.setId(18); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); accountList2.add(account); try { sqlMap.startTransaction(); sqlMap.startBatch(); // insert 5 accounts for (int i = 0; i < accountList1.size(); i++) { sqlMap.insert("insertAccountViaInlineParameters", accountList1.get(i)); } // update 1 account account = new Account(); account.setId(10); account.setFirstName("barney"); account.setLastName("rubble"); account.setEmailAddress("barney.rubble@gmail.com"); sqlMap.update("updateAccountViaInlineParameters", account); // insert another account account = new Account(); account.setId(19); account.setFirstName("fred"); account.setLastName("flintstone"); account.setEmailAddress("fred.flintstone@gmail.com"); sqlMap.insert("insertAccountViaInlineParameters", account); // insert 1 account with all null values (this should cause an error when the batch is executed) account = new Account(); sqlMap.insert("insertAccountViaInlineParameters", account); // update 1 account account = new Account(); account.setId(11); account.setFirstName("barney"); account.setLastName("rubble"); account.setEmailAddress("barney.rubble@gmail.com"); sqlMap.update("updateAccountViaInlineParameters", account); // insert 4 accounts for (int i = 0; i < accountList2.size(); i++) { sqlMap.insert("insertAccountViaInlineParameters", accountList2.get(i)); } sqlMap.executeBatchDetailed(); fail("This statement should not get executed - we expect an SQLException"); } catch (BatchException e) { // the first statement of the failing batch should have executed OK BatchUpdateException bue = e.getBatchUpdateException(); assertEquals(1, bue.getUpdateCounts().length); List results = e.getSuccessfulBatchResults(); assertEquals(2, results.size()); BatchResult br = (BatchResult) results.get(0); assertEquals(5, br.getUpdateCounts().length); br = (BatchResult) results.get(1); assertEquals(1, br.getUpdateCounts().length); } catch (SQLException e) { fail(e.getMessage()); } finally { try { sqlMap.endTransaction(); } catch (SQLException e) { fail(e.getMessage()); } } }
From source file:com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.java
License:Apache License
public int executeBatch() throws SQLException { try {/* w ww. ja v a2 s. c o m*/ int n = 0; for (BatchResult br : transactionManager.getCurrentExecutor().flushStatements()) { for (int c : br.getUpdateCounts()) { n += c; } } return n; } catch (BatchExecutorException e) { throw new BatchException(e); } }
From source file:org.camunda.bpm.engine.impl.db.EnginePersistenceLogger.java
License:Apache License
public void printBatchResults(List<BatchResult> results) { if (results.size() > 0) { StringBuilder sb = new StringBuilder(); sb.append("Batch summary:\n"); for (int i = 0; i < results.size(); i++) { BatchResult result = results.get(i); sb.append("Result ").append(i).append(":\t"); sb.append(result.getSql().replaceAll("\n", "").replaceAll("\\s+", " ")).append("\t"); sb.append("Update counts: ").append(Arrays.toString(result.getUpdateCounts())).append("\n"); }/*from w ww . j a va2 s.co m*/ logDebug("082", sb.toString()); } }
From source file:org.camunda.bpm.engine.impl.db.entitymanager.DbEntityManager.java
License:Apache License
protected void checkFlushResults(List<DbOperation> operationsToFlush, List<BatchResult> flushResult) { int flushResultSize = 0; if (flushResult != null && flushResult.size() > 0) { LOG.printBatchResults(flushResult); //process the batch results to handle Optimistic Lock Exceptions Iterator<DbOperation> operationIt = operationsToFlush.iterator(); for (BatchResult batchResult : flushResult) { for (int statementResult : batchResult.getUpdateCounts()) { flushResultSize++;//from w ww . java 2 s. c o m DbOperation thisOperation = operationIt.next(); if (thisOperation instanceof DbEntityOperation && ((DbEntityOperation) thisOperation).getEntity() instanceof HasDbRevision && !thisOperation.getOperationType().equals(DbOperationType.INSERT)) { final DbEntity dbEntity = ((DbEntityOperation) thisOperation).getEntity(); if (statementResult != 1) { ((DbEntityOperation) thisOperation).setFailed(true); handleOptimisticLockingException(thisOperation); } else { //update revision number in cache if (thisOperation.getOperationType().equals(DbOperationType.UPDATE)) { HasDbRevision versionedObject = (HasDbRevision) dbEntity; versionedObject.setRevision(versionedObject.getRevisionNext()); } } } } } //this must not happen, but worth checking if (operationsToFlush.size() != flushResultSize) { LOG.wrongBatchResultsSizeException(operationsToFlush); } } }