在Java中如何实现sql的批量提交,我用的时Ibatis要使用事务,并且没50条commit一下
解决方案 »
- url中的参数用了ognl表达式${},就出错!!!
- 求教各位大侠如何学习JAVAEE..............
- 关于ACTIVEMQ问题,请大家帮忙看看。。谢谢了
- 如何通过java从二进制文件中读取以前用c写入的一个结构体?
- Exception in thread "main" org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not al
- JSF又出问题了...(关于h:commandButton的问题)
- java写XML的问题!急!!急!!
- 请教个小问题
- **关于在JAVA一程序中碰到的一个SQL查询的问题,有没有改进方案**
- 关于Mybatis的小问题~
- Struts2 标签 输出的问题
- 现在的JavaEE开发都还分很多层吗?
start transaction
for (i=0, i < 50, i++) {
yourDao.updateSth(someObj)
}
commit;
public class LocalDaoImpl extends SqlMapClientDaoSupport implements LocalDao { public void insertBuNaTaxBatLst(final PaginatedList list)
{
getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
// do some iBatis operations here
for(int i=0,count=list.size();i<count;i++)
{
executor.insert("insertBuNaTaxBatLst", list.get(i));
if (i % 50 == 0) {
System.out.println("----" + i);//没有意义只为测试
}
}
executor.executeBatch();
return null;
}
});
}}
import java.sql.SQLException;public class TransactionManager {
private static ThreadLocal tl = new ThreadLocal();//声明了一个静态容器 //每次操作数据库都用这个方法取得连接,因为这个方法确保了是一个连接对像,所以达到了事务的目的.如果要50次提交一下,那就在servlet里面循环50次后调用此类的静态方法Commit() 即可.
public static Connection GetConn() throws ClassNotFoundException,
SQLException {
Connection conn = (Connection) tl.get();
if (conn == null) {
conn = Getconnection.GetConnJDBC();//取得数据JDBC连接
tl.set(conn);
conn.setAutoCommit(false);//关键:设置手动提交
}
conn.setAutoCommit(false);
return conn;
}
//事务提交
public static void Commit() {
try {
TransactionManager.GetConn().commit();
TransactionManager.GetConn().close();
tl.set(null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //事务回滚
public static void RollBack() {
try {
TransactionManager.GetConn().rollback();
TransactionManager.GetConn().close();
tl.set(null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//====================================
希望对你有帮助