ibatis对MySQL数据库的批量操作

对于批量操作,iBATIS提供了两种方式:

    使用iterate标签,进行批量插入操作;

    使用普通的SQL调用,提交时使用batch提交。

下面一一介绍:

1、使用iterate标签,进行批量插入操作

   将需要插入的Java Object封装到一个java.util.List集合中,然后调用SQL插入。这种方式主要利用iBATIS提供的iterate标签。例子如下:(下面例子中的list只是一个别名,可以更改)

可参考:http://patternhe.iteye.com/blog/960441


	  
	  
		  
	  
2、使用batch提交方式

      这个需要修改Dao层方法,下面代码是修改后的dao层代码,入参list为需要进行批量操作的Java Object集合,入参sqlId是要对list集合中每个对象要进行的操作的SQL(sqlId为iBATIS XML配置文件中的SQL对应的id)。例如SQL要进行更新操作,那么调用这个批量操作,会对list中的各个对象分别进行更新操作。

注意下面代码中的getSqlMapClient方法,使用iBATIS项目中应该都会注入这个对象。

可参考:http://salouhim.iteye.com/blog/1124661

public void batchOpt(final List list, final String sqlId ) throws Exception
{
	SqlMapClient smc = etSqlMapClient();
	SqlMapClientTemplate client = new SqlMapClientTemplate();
	client.setSqlMapClient(smc);
	client.execute(new SqlMapClientCallback() {
		public Object doInSqlMapClient(SqlMapExecutor exec)
				throws SQLException {
			exec.startBatch();
			final int batchSize = 100;
			for (int i = 0; i < list.size(); i++) 
			{
				exec.insert(sqlId, list.get(i));
				
				if (i % batchSize == 0)
				{
					exec.executeBatch();
				}
			}
			exec.executeBatch();
			return null;
		}
		
	});
} 
  批量操作调用的SQL 
  


	update t_test set field1 = #field1# , field2 = #field2# where field3 = #field3#




你可能感兴趣的:(MySQL,MyBatis/ibatis)