自增长主键回显实现,批量数据插入
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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!