转自:hibernate的批量删除
一般而言,hibernate的批量删除的写法有两种,一种是hibernate内置的批量删除,不过他的批量删除是将每条记录逐一生成删除
语句,其效率极低,当然我们可以使用抓取策略给其进行优化,不过这只是亡羊补牢的方法,效率的提升依然不能让我们满意,很不推荐使用;
另一种是由"拼串"形成的HQL语句,其能够形成一条语句,从而是效率得到最大的提升;

我们先说"拼串"形式的写法:
 个人使用是ssh,故此使用的是spring模板,如果单独使用hibernate,请增加事务与关闭session;

  1. //一条删除语句的写法
  2. public void del(int[] selectFlag) {
  3. //数组中封装的是ID的集合;
  4. String hql = "";
  5. for(int i=0;i<selectFlag.length;i++) {
  6. if(i==0) {
  7. hql = "id="+selectFlag[i];
  8. } else {
  9. hql =hql + " or id="+selectFlag[i];
  10. }
  11. }
  12. Session session= this.getSession();
  13. Query q= session.createQuery("delete from User where "+hql);
  14. q.executeUpdate();
  15. }

此写法会形成一条HQL语句,得到最大的提升;

然后我们说下是hibernate内置的批量删除:

调用dao层,并传递容器;

  1. /**
  2. * hibernate的批量删除;
  3. * 缺点:删除时是多条删除语句,影响效率;
  4. */
  5. List list = new ArrayList();
  6. for(int i=0;i<selectFlag.length;i++){
  7. User u= new User();
  8. u.setId(selectFlag[i]);
  9. list.add(u);
  10. }
  11. dao.del(list);
  12. //调用DAO层的删除方法;

DAO层:

  1. public void del(List list) {
  2. this.getHibernateTemplate().deleteAll(list);
  3. }

此种方法会发出多条的删除语句,影响效率极大;

hibernate的批量删除相关推荐

  1. 在Hibernate中处理批量更新和批量删除

    批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...

  2. hibernate批量删除和更新数据

    转载自:http://blog.csdn.net/yuhua3272004/article/details/2909538 Hibernate3.0 採用新的基于ANTLR的HQL/SQL查询翻译器, ...

  3. 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)

    1.导入jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app ver ...

  4. Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 页面展示 分页显示数据 添加用户信息 (单个/批量)删除用户 编辑 ...

  5. Hibernate的批量处理-批量更新

    上面介绍的方法同样适用于批量更新数据,如果需要返回多行数据,应该使用scroll()方法,从而可以充分利用服务器端游标所带来的性能优势.下面是进行批量更新的代码片段. 程序清单:codes\06\6. ...

  6. JSP页面实现批量删除数据

    实现这个功能的基本思路如下: 1:在jsp页面中获取到要删除对象的ID,一个或多个,批量当然是多个 2:在action中就要接收这些ID,并对这些ID进行初步的处理 3:在实现层进行数据库的操作 步骤 ...

  7. 用Python在Windows或Linux下批量删除文件夹中指定的文件

    情况说明:当在一个文件夹下面有好几十个或几百个文件需要删除,此时一一去挑选费时费力,特别是在Linux下面.因此,需要批量删除文件. 对训练样本(图像)和测试样本(图像)进行评估时候,需要查看是数据本 ...

  8. 删除空值_空白单元格行,如何快速批量删除?简单方法,效率飞升

    EXCEL进阶课堂 · 简单却不知道 系列文章持续推送!各位小伙伴,EXCEL的日常操作中,有许多功能使用频率很高,可是绝大多数人只使用到其最基本的功能,对于其背后的强大拓展功能知之甚少,更不说使用它 ...

  9. py-redis中的批量删除key方法

    py-redis中有个delete接口,既可以删除单个key,也可以批量删除key,后者的正确用法网上很少,我在实践中遇到该问题,特此记录一下. 网上的资料,大多都是这样的 r.delete('age ...

  10. php redis删除所有key,redis中批量删除key的方法

    Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...

最新文章

  1. OpenStack环境搭建(三:Computer与Controller节点的安装及配置)
  2. python字符串连接优先使用jion而非+
  3. windows中VS卸载opencv配置,重新安装其他版本
  4. DEDE的安装 和 DEDE文件和目录详解与安全问题
  5. 一步步编写avalon组件02:分页组件
  6. MediaDevices.getUserMedia()
  7. 高通7227平台外接UBLOX的GPS模块数据接收不稳定问题
  8. 解决手机邮箱登录学生邮箱时服务器无法连接的问题
  9. 求网页中嵌入mp3 格式音乐的html代码,子夜星·关于网页中加入音乐代码的讲解...
  10. 宝尚简讯-短期震荡在蓄势
  11. retinaface人脸检测在fddb数据集上的测试
  12. JAVA百度贴吧签到器
  13. mysql定时自动备份数据库
  14. 利用matlab实现驻波仿真
  15. 随笔-不足与外人道也
  16. php迭代什么意思,迭代关系什么意思
  17. 第一章 C语言与内存
  18. Unity 颜色板|调色板|无级变色功能
  19. Linux下python环境搭建
  20. 正则表达式 匹配美元等多种货币符号的超简单方法

热门文章

  1. amd玄冰400怎么拆图解_【装机帮扶站】第735期:“无货”当道的京东年底大预售来了(AMD篇)...
  2. oracle多边形经纬范围筛选_Oracle数据库之Oracle spatial空间查询的选择度分析
  3. 机器学习特征与类型概述
  4. 机器学习数学基础之微分
  5. CrowdSec:行为检测引擎
  6. 刷题记录 kuangbin带你飞专题九:连通图
  7. HashMap源码分析(保姆式注解):三大方法(构造、Put、Remove) ;附带面试考点及博主免费答疑
  8. 计算机应用基础专科在线考试,电子科技大学在线考试2019年春计算机应用基础专科(18页)-原创力文档...
  9. php while次数,PHP While 循环
  10. 136.Single Number