hibernate批处理、sql存在则更新不存在插入
来源:互联网 发布:酒精刻录软件 编辑:程序博客网 时间:2024/05/29 08:20
hibernate中可以从query对象获取connection直接操作数据库
public void setStatus(String arrMsgID[]) { //sql语句 String updateSql = "UPDATE tb_msgboard SET status ='1' WHERE msgID =?"; //通过session获取事务 和spring整合之后这步并不需要 Transaction ts = session.beginTransaction(); session.doWork( //实现work接口,work接口中有一个execute方法,connection就是这个方法的参数,也就是在这里获得jdbc的connection new Work(){ @Override public void execute(java.sql.Connection connection) throws SQLException { try { PreparedStatement stmt = connection.prepareStatement(updateSql); //这里进行批量操作 for (int i = 0; i < arrMsgID.length; i++) { stmt.setString(1, arrMsgID[i]); stmt.addBatch(); // 添加到批处理命令 } stmt.executeBatch(); ts.commit(); } catch (Exception e) { e.printStackTrace(); ts.rollback(); HibernateUtil.closeSession(session); } } }); HibernateUtil.closeSession(session); }public void execute(Connection conn) throws SQLException {PreparedStatement ps = conn.prepareStatement(insertSql.toString());int count = 0;for (PickupDepotResult e : results) {//...设置参数ps.setObject(i++,converDateTimeStamp(e.getCreatedTm()));ps.addBatch();count++;if (count % 1000 == 0) {// 1000条提交一次executeBatch(ps);}}long startTm=System.currentTimeMillis();executeBatch(ps);long endTm=System.currentTimeMillis();logger.debug("执行sql:"+insertSql.toString()+"总耗时:"+(endTm-startTm)/1000);}private void executeBatch(PreparedStatement ps) {try {ps.executeBatch();ps.clearBatch();} catch (Exception e) {e.printStackTrace();logger.error("ps:", ps);logger.error("executeBatch error," + e.getMessage(), e);}}
sql方式根据 UNIQUE KEY 存在更新不存在插入
insertSql.append("(");insertSql.append("created_tm,batch_code,operate_zone_code,batch_tm,last_indepot_tm,begin_tm,"+ "end_tm,work_day,batch_no,pickphase_begin_tm,pickphase_end_tm,version_dt,status,update_version_dt,update_tm");insertSql.append(") VALUES (");insertSql.append("?,?,?,?,?,");insertSql.append("?,?,?,?,?,");insertSql.append("?,?,?,?,?)");insertSql.append(" ON DUPLICATE KEY UPDATE ");insertSql.append(" created_tm =? ,batch_code =?,operate_zone_code =?,batch_tm= ?,last_indepot_tm=?,begin_tm=?,"+ "end_tm=?,work_day=?,batch_no=?,pickphase_begin_tm=?,pickphase_end_tm=?,version_dt=?,status=?,update_version_dt=?,update_tm=?");建表加上 UNIQUE KEY `pickup_depot_result_unique` (`batch_code`,`batch_tm`)
阅读全文
0 0
- hibernate批处理、sql存在则更新不存在插入
- mysql 存在则更新 不存在则插入 SQL语句
- oracle sql 记录存在则更新,不存在则插入
- SQL Update 存在则更新,不存在则插入
- key存在则更新,不存在则插入
- mysql 存在更新 不存在插入
- sql 批量操作(存在的更新,不存在的插入)
- sql存在该记录就更新,不存在就插入
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
- mysql 存在该记录则更新,不存在则插入记录的sql
- mysql 存在该记录则更新,不存在则插入记录的sql
- mysql 存在该记录则更新,不存在则插入记录的sql
- mysql 存在该记录则更新,不存在则插入记录的sql
- SQL语句实现两张表之间不存在则插入,存在则更新
- 【转载】判断链表中是否有环 ----- 有关单链表中环的问题
- Numpy中stack(),hstack(),vstack()函数详解
- 纪念一下pyTorch自由读取txt路径存储格式的图片数据
- webstorm2017.3最新激活教程(旧版本可用,亲测成功,有疑问随时联系)
- 02.创新与企业精神——有目的的创新和创新机遇的7个来源
- hibernate批处理、sql存在则更新不存在插入
- IT之路博客第一篇
- hadoop学习(一)----概念和整体架构
- 对项目开发的一些感悟
- AHK 单键实现复制粘贴
- 操作系统中长期调度、中期调度和短期调度之间的区别
- 年会
- centos用yum安装mongodb及 32位linux(centos)下mongoDB的安装
- 03.创新机遇来源一:意外事件