读书人

MyBatis兑现批量操作

发布时间: 2012-09-06 10:37:01 作者: rapoo

MyBatis实现批量操作
MyBatis实现批量操作

/** * 批量操作 * @param sqlID * @param bindParams * @return * @throws SQLException */@SuppressWarnings("unchecked")private <T> int[] batchUpdate(String sqlID, List<T> bindParams) throws SQLException{SqlSession sqlse = getSqlSession();        Connection connection = null;        Transaction transaction = null;        Environment env;        BatchExecutor be;        Configuration conf = sqlse.getConfiguration();        conf.setDefaultExecutorType(ExecutorType.BATCH);        env = conf.getEnvironment();        connection = env.getDataSource().getConnection();        connection.setAutoCommit(false);        transaction = env.getTransactionFactory().newTransaction(connection, false);        be = new BatchExecutor(conf, transaction);        MappedStatement ms = conf.getMappedStatement(sqlID);        int x = 0;        Object bt;        List<Object> bts = (List<Object>) bindParams;                 for (int i = 0; i < bts.size(); i++) {            bt = bts.get(i);            x = be.update(ms, bt);            System.out.println(x + "x:");        }        be.commit(true);        transaction.commit();        List<BatchResult> bl = be.flushStatements();        int[] ret = null;        if(bl != null){            for(int b = 0; b < bl.size(); b ++){                BatchResult br = bl.get(b);                ret = br.getUpdateCounts();                System.out.println("re length:" + ret.length);            }        }        be.close(false);        transaction.close();        System.out.println(x);                return ret;}

读书人网 >编程

热点推荐