public static void batchInsert(TableName_Field[] tablelist)
{
long start = 0l;
if (logger.isInfoEnabled())
{
start = System.currentTimeMillis();
}
logger.debug("Ready insert TableName_Field size:" + tablelist.length);
Connection connection = ConnectionTools.getConnection();
PreparedStatement pstatement = null;
// 如果取不到数据库连接则抛出异常
if (connection == null)
{
logger.error("Can not get link Connection. ");
//throw new DbException("Can't get fetch Connection", -1);
}
//定义以表名为key的SQL语句.
Map<String, PreparedStatement> preParedMap = new HashMap<String, PreparedStatement>(
3);
try
{
String sqls=null;
for(TableName_Field table:tablelist)
{
if(preParedMap.get(table.getTableName())==null)
{
sqls=getPstatementsql(table);
pstatement=connection.prepareStatement(sqls);
preParedMap.put(table.getTableName(), pstatement);
putValue2Pstatement(table, pstatement);
pstatement.addBatch();
}
else
{
putValue2Pstatement(table,
preParedMap.get(table.getTableName()));
preParedMap.get(table.getTableName()).addBatch();
}
}
for(Map.Entry<String, PreparedStatement> entry : preParedMap
.entrySet())
{
entry.getValue().executeBatch();
}
connection.commit();
if(logger.isInfoEnabled())
{
logger.info("Insert TableName_Field[] size = "
+ tablelist.length + " and process time : "
+ (System.currentTimeMillis() - start));
}
}
catch (Exception e)
{
logger.error("Excute Batch sql exception :", e);
try
{
connection.rollback();
}
catch (SQLException e1)
{
logger.error(
"Excute Batch sql is rollback, but has exception :", e1);
}
}
finally
{
try
{
for (Map.Entry<String, PreparedStatement> entry : preParedMap
.entrySet())
{
entry.getValue().cancel();
entry.setValue(null);
}
}
catch (Exception e2)
{
logger.error("Can't close DB Connection", e2);
}
try
{
connection.close();
}
catch (Exception e2)
{
logger.error("Can't close DB Connection", e2);
}
}
}
}
{
long start = 0l;
if (logger.isInfoEnabled())
{
start = System.currentTimeMillis();
}
logger.debug("Ready insert TableName_Field size:" + tablelist.length);
Connection connection = ConnectionTools.getConnection();
PreparedStatement pstatement = null;
// 如果取不到数据库连接则抛出异常
if (connection == null)
{
logger.error("Can not get link Connection. ");
//throw new DbException("Can't get fetch Connection", -1);
}
//定义以表名为key的SQL语句.
Map<String, PreparedStatement> preParedMap = new HashMap<String, PreparedStatement>(
3);
try
{
String sqls=null;
for(TableName_Field table:tablelist)
{
if(preParedMap.get(table.getTableName())==null)
{
sqls=getPstatementsql(table);
pstatement=connection.prepareStatement(sqls);
preParedMap.put(table.getTableName(), pstatement);
putValue2Pstatement(table, pstatement);
pstatement.addBatch();
}
else
{
putValue2Pstatement(table,
preParedMap.get(table.getTableName()));
preParedMap.get(table.getTableName()).addBatch();
}
}
for(Map.Entry<String, PreparedStatement> entry : preParedMap
.entrySet())
{
entry.getValue().executeBatch();
}
connection.commit();
if(logger.isInfoEnabled())
{
logger.info("Insert TableName_Field[] size = "
+ tablelist.length + " and process time : "
+ (System.currentTimeMillis() - start));
}
}
catch (Exception e)
{
logger.error("Excute Batch sql exception :", e);
try
{
connection.rollback();
}
catch (SQLException e1)
{
logger.error(
"Excute Batch sql is rollback, but has exception :", e1);
}
}
finally
{
try
{
for (Map.Entry<String, PreparedStatement> entry : preParedMap
.entrySet())
{
entry.getValue().cancel();
entry.setValue(null);
}
}
catch (Exception e2)
{
logger.error("Can't close DB Connection", e2);
}
try
{
connection.close();
}
catch (Exception e2)
{
logger.error("Can't close DB Connection", e2);
}
}
}
}