Example usage for org.apache.ibatis.executor BatchResult getUpdateCounts

List of usage examples for org.apache.ibatis.executor BatchResult getUpdateCounts

Introduction

In this page you can find the example usage for org.apache.ibatis.executor BatchResult getUpdateCounts.

Prototype

public int[] getUpdateCounts() 

Source Link

Usage

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);
        }
    }
}