对于需要批量插入数据库操作JDBC有多重方式,本利从三个角度对Statement和PreparedStatement两种执行方式进行分析,总结较优的方案。
当前实现由如下条件:
执行数据库:Mysql
执行数据数量:10万条
执行前提:执行差入数据库钱均需要提供空表,防止数据量大造成的影响
执行方式:Statement和PreparedStatement两种方式
执行步骤开始:
1、创建表
1 CREATE TABLE T_PRODUCT (2 ID bigint(12) NOT NULL AUTO_INCREMENT COMMENT '主键',3 NAME varchar(60) NOT NULL COMMENT '产品名称',4 WEIGHT varchar(60) NOT NULL COMMENT '产品重量',5 MARK varchar(60) NOT NULL COMMENT '产品说明',6 PRIMARY KEY (ID)7 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='产品表';
2、编写操作数据库工具类
1 packagecom.luwei.test.jdbc;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.SQLException;6 importjava.sql.Statement;7 importjava.util.ResourceBundle;8
9 /**
10 * TODO
11 *12 *@authorlu.wei
13 * @email 1025742048@qq.com
14 * @date 2017年1月9日
15 *@sinceV1.0
16 *@seecom.luwei.test.jdbc
17 */
18 public classJdbcTemplate {19 private static String DRIVER_CLASS_NAME = null;20 private static String URL = null;21 private static String USERNAME = null;22 private static String PASSWORD = null;23
24 static{25 ResourceBundle bundle = ResourceBundle.getBundle("jdbc");26 DRIVER_CLASS_NAME = bundle.getString("jdbc.driverClassName");27 URL = bundle.getString("jdbc.url");28 USERNAME = bundle.getString("jdbc.username");29 PASSWORD = bundle.getString("jdbc.password");30 }31
32 /**
33 *34 * 获取数据库连接
35 *36 *@authorlu.wei
37 * @email 1025742048@qq.com
38 * @date 2017年1月9日 下午10:19:41
39 *@return
40 *@throwsException41 *
42 */
43 public static Connection getConnection() throwsException {44 Class.forName(DRIVER_CLASS_NAME);45 Connection connection =DriverManager.getConnection(URL, USERNA