MyBatis实现批量操作

MyBatis实现批量操作


/**
* 批量操作
* @param sqlID
* @param bindParams
* @return
* @throws SQLException
*/
@SuppressWarnings("unchecked")
private int[] batchUpdate(String sqlID, List 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 bts = (List) 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 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;
}

你可能感兴趣的:(MyBatis实现批量操作)