首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

ibatis 作批量操作(含事务)

2012-09-11 
ibatis 做批量操作(含事务) public class Test1 {/** * 使用iBatis进行批量操作 * @param args */public s

ibatis 做批量操作(含事务)

 

public class Test1 {/** * 使用iBatis进行批量操作 * @param args */public static void main(String[] args) throws Exception{// iBatis处理Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);reader.close();// 生成对象List<User> list = new ArrayList<User>();for (int i = 1; i <= 100; i++) {User u = new User();u.setName("user" + i);u.setAge(10 + i);u.setSex("m");list.add(u);}// 批量操作,每次保存20条记录,并使用事务long t1 = System.currentTimeMillis();for (int i = 1; i <= list.size(); i++) {if (i % 20 == 0) {updateBatch(sqlMapClient, list.subList(i - 20, i), i / 20);}}long t2 = System.currentTimeMillis();// 计算操作用时,可以将事务去掉进行比较System.out.println(t2 - t1);}/**  * @Description: 使用iBatis进行批量操作,并且使用事务  *     此方法前两个事务操作正常结束;第三个事务操作到一半时会抛出异常,检测事务是否回滚  *   * @param sqlMapClient  * @param users 要保存到数据库的用户集合  * @param count 方法的执行次数  * @throws Exception 异常,让方法第三次执行且操作第十条数据时抛出异常 */private static void updateBatch(SqlMapClient sqlMapClient, List<User> users, int count) throws Exception {try{// 事务开始sqlMapClient.startTransaction();// 批量操作开始sqlMapClient.startBatch();for (int i = 0; i < users.size(); i++) {// 抛出异常if (count == 3 && i == 10) throw new RuntimeException();// 保存数据sqlMapClient.insert("saveUser", users.get(i));}// 批量操作执行sqlMapClient.executeBatch();// 事务提交 sqlMapClient.commitTransaction();} catch (Exception e) {throw e;} finally {try {// 事务结束sqlMapClient.endTransaction();} catch (SQLException e) { e.printStackTrace();  }}}}

热点排行