rewriteBatchedStatements=true
如果不开启rewriteBatchedStatements=true,那么jdbc会把批量插入当做一行行的单条处理,也即没有达到批量插入的效果
示例代码
db.properties
mysqlDriver=com.mysql.jdbc.Driver
mysqlURL=jdbc\:mysql\://localhost\:3306/mydb?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8
mysqlUser=root
mysqlPwd=root
JDBCUtils
package com.jmdf.jdbc;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* PreparedStatement预编译防止了sql注入原因是利用的?作为参数得占位符,而不是拼接java代码,里面的setString会转义非法字符。
* ResultSet是什么容器,怎么把数据封装成对象。
* 批处理:①先把事务调成手动提交,用Statement,addbatch(sql)执行用executebatch(),手动提交事务
* @author 25788
*
*/
public class JDBCUtils {
//读取资源文件
static Properties pros=null;
static{
pros=new Properties();
try {
pros.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
System.out.println("加载资源文件");
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getMysqlConn(){
try {
Class.forName(pros.getProperty("mysqlDriver"));
return DriverManager.getConnection(pros.getProperty("mysqlURL"),
pros.getProperty("mysqlUser"),pros.getProperty("mysqlPwd"));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static Connection getOracleConn(){
try {
Class.forName(pros.getProperty("oracleDriver"));
return DriverManager.getConnection(pros.getProperty("oracleURL"),
pros.getProperty("oracleUser"),pros.getProperty("oraclePwd"));
} catch (Exception e) {
e.printStackTrac