jdbcTemplate并行流处理批量 insert|update 1.建表: CREATE TABLE `nuo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `satatus` int(2) DEFAULT NULL, `mgt_modify` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; 2.操作代码: public int modify() { // String sql = " INSERT INTO nuo ( name, satatus, mgt_modify) VALUES ( ?, ?, NOW()) "; String sql = " UPDATE nuo SET name=?, mgt_modify=NOW() WHERE id = ? "; List<String> list = new ArrayList<>(); for (int i=1; i<= 20000;i++){ list.add("cc"+i); } return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setString(1, list.get(i)); ps.setInt(2, i+1); } @Override public int getBatchSize() { return list.size(); } }).length; }
3.可能会遇到的问题
在使用jdbcTemplate.batchUpdate方法批量插入60000条数据时,耗时很久.很明显该方法没有执行批处理.
在mysql.url
后面加上rewriteBatchedStatements=true
开启批处理