自增长主键回显实现,批量数据插入

复制代码
 1 package com.atsyc.api.preparedstatement;
 2 
 3 import org.junit.Test;
 4 
 5 import java.sql.*;
 6 
 7 public class PSOtherPart {
 8     /*
 9      * TODO:
10      *      t_user插入一条数据,并且获取数据库自增长的主键
11      *      使用总结:
12      *              1.在创建prepareStatement的时候,告知,携带回数据库增长的主键
13      *              2.获取装主键值的结果及对象,一行一列,获取对应数据
14      *
15      * TODO:
16      *      使用批量插入的形式插入一万条数据
17      *      使用总结:
18      *              1.路径后面添加?rewriteBatchedStatements=true,允许批量插入
19      *              2.insert into --- values[必须写]语句尾不能添加;结束
20      *              3.不是执行语句每条,是批量添加addBatch();
21      *              4.遍历添加完毕后,统一批量执行
22      */
23     @Test
24     public void returnPrimaryKey() throws Exception {
25         Class.forName("com.mysql.cj.jdbc.Driver");
26         Connection connection = DriverManager.getConnection("jdbc:mysql:///atsyc?rewriteBatchedStatements=true","root","Yican030615");
27         String sql = "INSERT into t_user(account,password,nickname) values (?,?,?)";
28         PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
29 
30         long start = System.currentTimeMillis();
31 
32         for(int i=0;i<10000;i++) {
33             statement.setObject(1, "test3"+i);
34             statement.setObject(2, "123333"+i);
35             statement.setObject(3, "主键获取测试员pro"+i);
36             //statement.executeUpdate();  //普通添加执行需要近十秒,下面批量添加仅需0.3秒
37             statement.addBatch();  //不执行,追击到values后面
38         }
39 
40         statement.executeBatch();  //执行批量操作
41 
42         long end = System.currentTimeMillis();
43 
44         /*
45         if(i>0){
46             System.out.println("数据插入成功!");
47             //获取回显的主键
48             //获取装主键的结果集对象 一行一列 id=值
49             ResultSet resultSet = statement.getGeneratedKeys();
50             resultSet.next();
51             int id = resultSet.getInt(1);
52             System.out.println("id = " + id);
53         }else{
54             System.out.println("数据插入失败!");
55         }
56         */
57 
58         System.out.println("执行10000次数据插入消耗的时间 = "+(end-start));
59 
60         statement.close();
61         connection.close();
62     }
63 }
复制代码

 

posted @   白茶花约  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示