Connection conn = DBUtils.getConn();
conn.setAutoCommit(false);//设置自动提交为false,否则无法运行
String sql = “insert into t_detail values(?,?,?,?,?,?)”;
int a = 0;
int q = 0;//用于具象化显示批量插入次数
PreparedStatement p = conn.prepareStatement(sql);
for (BIDR i : list) {//BIDR是我自定义的数据类型
p.setString(1, i.getAAA_login_name());
p.setString(2, i.getLogin_ip());
p.setTimestamp(3, i.getLogin_date());
p.setTimestamp(4, i.getLogout_date());
p.setString(5, i.getNAS_ip());
p.setInt(6, i.getTime_deration());
a++;
p.addBatch();// 批量处理,对mysql没用个鬼啊!
if (a % 500 == 0) {
p.executeBatch();
conn.commit();
System.out.println(++q);
}
}
p.executeBatch();
conn.commit();
p.close();
需要注意的是,在mysql批量插入数据的时候,需要对mysql的url进行配置,以5.7.19为例,
jdbc:mysql://127.0.0.1:3306/wosscharacterEncoding=utf8&rewriteBatchedStatements=true&useServerPrepStmts=true&useSSL=true
这句话中,rewriteBatchedStatements=true和useServerPrepStmts=true是必须得加上的