jdbc批量更新数据
2016-03-20 18:20
399 查看
{ boolean add = true; Connection conn = null; PreparedStatement pst = null; String sql = null; try { conn = this.getConnection(); conn.setAutoCommit(false); // sql = "MERGE INTO PUSH_NUMBER T1 " // + " USING (SELECT ? AS MOBILE, ? AS PKG_ID FROM DUAL) T2 " // + " ON (T2.MOBILE=T1.USER_NUMBER AND T2.PKG_ID=T1.PKG_ID) " + " WHEN NOT MATCHED THEN " // + " INSERT VALUES(SEQ_PUSH_NUMBER.NEXTVAL,?,?)"; sql = "insert into PUSH_NUMBER(NUMBER_ID,USER_NUMBER,PKG_ID) values(null,?,?)"; pst = conn.prepareStatement(sql); int num = 0; for (String mobile : numbers) { num++; pst.setString(1, mobile); pst.setInt(2, pkgId); pst.addBatch(); if (num % 30000 == 0) { pst.executeBatch(); pst.clearBatch(); } } if (num > 0) { pst.executeBatch(); } conn.commit(); } catch (Exception e) { add = false; logger.error("addNumber was failed!", e); } finally { if (null != pst) { pst.close(); } if (null != conn) { conn.close(); } } return add; }
spring jdbc批量入库
//采用insert into replace 检测手机号码是否存在,存在更新,不存在新增 String sql = "insert into push_token(token,mobile) values(?,?) on DUPLICATE KEY UPDATE token = ?"; List<Object[]> args = new ArrayList<Object[]>(); for (int i = 0; i < tokens.size(); i++) { Object[] objects = new Object[]{tokens.get(i), mobiles.get(i), tokens.get(i)}; args.add(objects); } //3000条提交一次 ArrayList<Object[]> temp = new ArrayList<Object[]>(3000); List<Object[]> copy = null; for (Object[] objects : args) { temp.add(objects); if (temp.size() >= 3000) { copy = (List<Object[]>) temp.clone(); temp.clear(); if (temp.isEmpty() && copy.size() >= 3000) { getJdbcTemplate().batchUpdate(sql, copy); } } } if (temp.size() > 0) { copy = (List<Object[]>) temp.clone(); temp.clear(); if (temp.isEmpty() && copy.size() > 0) { getJdbcTemplate().batchUpdate(sql, copy); } }
相关文章推荐
- jdbc中的Statement和PreparedStatement接口对象
- PreparedStatement中in子句的处理
- JDBC 数据库常用连接 链接字符串
- JDBC连接Access数据库的几种方式介绍
- JDBC程序更新数据库中记录的方法
- JDBC 程序的常见错误及调试方法
- 在Java的JDBC使用中设置事务回滚的保存点的方法
- Java中使用JDBC操作数据库简单实例
- Java加载JDBC驱动程序实例详解
- JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法
- JSP基于JDBC的数据库连接类实例
- JSP中使用JDBC访问SQL Server 2008数据库示例
- jsp+jdbc实现连接数据库的方法
- 解析jdbc处理oracle的clob字段的详解
- Tomcat7.0安装配置详细(图文)
- JDBC数据库的使用操作总结
- jdbc操作mysql数据库实例
- JSP使用JDBC连接MYSQL数据库的方法
- Java开发Oracle数据库连接JDBC Thin Driver 的三种方法
- JDBC常见问答