#写入方法
public void transfer(DataSource dataSource, String tableName, Data data) {
if (data== null || data.size() <= 0) {
throw new RuntimeException("数据为空!");
}
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO");
sb.append(" ");
sb.append(tableName);
sb.append("(");
sb.append(struct.tagName());
sb.append(",");
sb.append(struct.tagValue());
sb.append(",");
sb.append(struct.charColumn());
sb.append(")");
sb.append(" ");
sb.append("VALUES");
sb.append("(?,?,?,?)");
PreparedStatement preparedStatement = null;
Connection conn = null;
try {
log.debug("start to get a connection");
try {
//设置缓存
conn = getConnection(dataSource);
} catch (SQLException e) {
conn = getConnection(dataSource);
}
if (conn == null) {
throw new RuntimeException("连接数据库失败!");
}
boolean autoCommit = conn.getAutoCommit();
//关闭自动提交能大幅提升批量插入性能
conn.setAutoCommit(false);
preparedStatement = conn.prepareStatement(sb.toString());
for (int i = 0; i < transferDataValue.size(); i++) {
preparedStatement.setString(1, data.get(i).tagName());
preparedStatement.setString(2, data.get(i).tagValue());
preparedStatement.setString(3, data);
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
conn.commit();
//还原
conn.setAutoCommit(autoCommit);
} catch (Exception e) {
log.warn(" conn database error {}", e);
throw new RuntimeException("conn database error :" + e.getMessage());
} finally {
try {
if (preparedStatement != null) {
preparedStatement.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
log.warn("close preparedStatement error {}", e);
}
}
}