jdbc java数据库连接 10)批处理
批处理
很多时候,需要批量执行sql语句!
需求:批量保存信息!
设计:
AdminDao
Public void save(List<Admin list){ // 目前用这种方式
// 循环
// 保存 (批量保存)
}
Public void save(Admin admin ){
// 循环
// 保存
}
技术:
|-- Statement
批处理相关方法
- void addBatch(String sql) 添加批处理
 - void clearBatch() 清空批处理
 - int[] executeBatch() 执行批处理
 
实现:
- Admin.java 实体类封装数据
 - AdminDao.java 封装所有的与数据库相关的操作
 - App.java 测试
 
代码:
1:实体类封装数据
 public class Admin {
     private String userName;
     private String pwd;
 }
2:测试批处理操作
 public class App {
     // 测试批处理操作
     @Test
     public void testBatch() throws Exception {
         // 模拟数据
         List<Admin> list = new ArrayList<Admin>();
         for (int i=1; i<21; i++) {
             Admin admin = new Admin();
             admin.setUserName("Jack" + i);
             admin.setPwd("888" + i);
             list.add(admin);
         }
         // 保存
         AdminDao dao = new AdminDao();
         dao.save(list);
     }
 }
3:封装所有的与数据库的操作
 public class AdminDao {
     // 全局参数
     private Connection con;
     private PreparedStatement pstmt;
     private ResultSet rs;
     // 批量保存管理员
     public void save(List<Admin> list) {
         // SQL
         String sql = "INSERT INTO admin(userName,pwd) values(?,?)";
         try {
             // 获取连接
             con = JdbcUtil.getConnection();
             // 创建stmt
             pstmt = con.prepareStatement(sql);           // 【预编译SQL语句】
             for (int i=0; i<list.size(); i++) {
                 Admin admin = list.get(i);
                 // 设置参数
                 pstmt.setString(1, admin.getUserName());
                 pstmt.setString(2, admin.getPwd());
                 // 添加批处理
                 pstmt.addBatch();                        // 【不需要传入SQL】
                 // 测试:每5条执行一次批处理
                 if (i % 5 == 0) {
                     // 批量执行
                     pstmt.executeBatch();
                     // 清空批处理
                     pstmt.clearBatch();
                 }
             }
             // 批量执行
             pstmt.executeBatch();
             // 清空批处理
             pstmt.clearBatch();
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             JdbcUtil.closeAll(con, pstmt, rs);
         }
     }
 }
jdbc java数据库连接 10)批处理的更多相关文章
- jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化
		
上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 // 创建驱动注册对象 Class. ...
 - jdbc java数据库连接 11)中大文本类型的处理
		
1. Jdbc中大文本类型的处理 Oracle中大文本数据类型, Clob 长文本类型 (MySQL中不支持,使用的是text) Blob 二进制类型 MySQL数据库, Text ...
 - jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件
		
之前的代码中,以下代码很多时候并不是固定的: private static String url = "jdbc:mysql://localhost:3306/day1029?useUnic ...
 - jdbc java数据库连接 5)CallableStatement 接口
		
CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: DELIMITER $ CREATE PROCEDURE pro_findById(IN ...
 - jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL
		
|- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...
 - jdbc java数据库连接 2)jdbc接口核心的API
		
JDBC接口核心的API java.sql.* 和 javax.sql.*(java2.0以后更新的扩展) |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接 ...
 - jdbc java数据库连接  1)jdbc入门
		
之前操作数据 1)通过mysql的客户端工具,登录数据库服务器 (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 什么是jdbc? 使用jav ...
 - jdbc:java数据库连接
		
1.导jar包 四大参数: 1.加载驱动类:Class.forName("com.mysql.jdbc.Driver"); 2.url:jdbc:mysql://localhost ...
 - jdbc java数据库连接 8)防止sql注入
		
回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象; 写sql 5:执行sql ...
 
随机推荐
- 用原始方法解析复杂字符串,json一定要用JsonMapper么?
			
经常采集数据,肯定会碰到解析字符串,包括整个页面的html,或者json以及一些不标准的json格式... 以前用json序列化,有时候需要实体类,有的时候没有,比较麻烦,听说可以用JsonMappe ...
 - JVM学习(4)——全面总结Java的GC算法和回收机制
			
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...
 - isEmpty和isBlank的区别
			
isEmpty 判断某字符串是否为空,为空的标准是 str==null或 str.length()==0 StringUtils.isEmpty(null) = true StringUtils.i ...
 - 由css reset想到的深入理解margin及em的含义
			
由css reset想到的深入理解margin及em的含义 原文地址:http://www.ymblog.net/content_189.html 经常看到这样语句,*{ margin:0px;pad ...
 - MyCat源码分析系列之——结果合并
			
更多MyCat源码分析,请戳MyCat源码分析系列 结果合并 在SQL下发流程和前后端验证流程中介绍过,通过用户验证的后端连接绑定的NIOHandler是MySQLConnectionHandler实 ...
 - 【原创】C#模拟Post请求,正文为json数据的代码参考
			
由于之前一直在做键值对post数据的提交,没遇到过json正文的提交,遇到的问题截图: 对于此种情况的post,我用 谷歌插件 PostMan 模拟试了下成功了,截图如下: Postman插件在你选择 ...
 - 【.NET MF】.NET Micro Framework USB移植
			
1.开发环境 windows 7 32位 MDK 4.54 .Net Micro Framework Porting Kit 4.2(RTM QFE2) .Net Micro Framework ...
 - sessionStorage 和 localStorage 、cookie
			
sessionStorage 和 localStorage html5中web storage包括两种储存方式:sessionStorage 和 localStorage sessionStorage ...
 - jdk源码分析红黑树——插入篇
			
红黑树是自平衡的排序树,自平衡的优点是减少遍历的节点,所以效率会高.如果是非平衡的二叉树,当顺序或逆序插入的时候,查找动作很可能会遍历n个节点 红黑树的规则很容易理解,但是维护这个规则难. 一.规则 ...
 - instanceof 运算符
			
java中的instanceof=======>二元运算符 用法: result = object instanceof class 参数: result 是boolean类型 object 是 ...