常用操作提高效率 之 for 与in
问题如何而来:
对于刚参加工作的我 批量删除数据通常采用的是前端传递到后台一个对象的id字符串 通过逗号分隔的多个id 或者收的直接是一个id数组 两个原理一样第一个后台要在次使用split(",")做分隔成数组 ,然后通过遍历数组 采用 delete(id) 逐条的执行删除操作。
以前 这样写大家应该明白什么意思 循环里 通过每条的id 执行一次删除
for(){
delete from tb_name where id = ?
}
这样是我一直采用的方式。
首先从功能实现的角度 上面的解决方案并没有任何问题。
那么为什么我会记录自己对for 与in 的效率问题 是另外一个朋友说他在实现批量处理删除操作的时候 他们的技术总监说这样的效率比较慢 让采用in
实现方式很简单 就是将以前的单个逐条删除 转为 将id数组转为一个id集合 sql 实现如下 方式
delete from tb_name where id in ( 传入id的集合) 我们通常实现删除一条数据的操作都是采用主键id来操作的。
那么为什么说采用in的方式效率更高那?
我自己的理解 for循环的方式 每执行一次删除操作就要在数据库连接池中建立一次链接 执行一次sql的解析等一系列过程 同时增加了数据库的IO操作
而in 只需要一次的连接 采用or 的形式 对sql的解析也只需要一次 所以从这些方面就说明了 采用in的方式效率更高一些。
其实两种方式都是来解决实际的问题,如果在后台系统比如OA 等办公系统上 这些内部系统在两者的效率上我们并不会能感受到所以都可以,应用要用在适合的位置,首先要解决问题。
实际应用:
//删除选中的消息
function delMessage(){
var arr = new Array();
$("input[name='items']:checked").each(function (i,e) {
var id = $(this).val();
arr.push(id);
});
if(arr.length>0){
var index =layer.confirm("确定删除这"+arr.length+"条数据吗?",
{icon:3,title:'提示',
scrollbar:false,
shadeClose: false ,
resize:false,
shade: [0.3, '#000'],
},
function(){
$.ajax({
type:'post',
url:'${base}/message/deleteMainMultipleMessages',
data:{"ids":arr},
success:function (data) {
location.reload();
},
error:function (data) {
layer.msg("删除失败!请稍后重试!")
}
})
layer.close(index);
}
)
}else if(arr.length==0){
layer.msg("请选择数据!",{time:1000});
}
}
controller中接收:
/**
* 首页处理消息删除
* @param ids
* @return
*/
@RequestMapping("/deleteMainMultipleMessages")
public void deleteMainMultipleMessages(@RequestParam(value = "ids[]")String ids[]){
service.deleteBatch(ids);
}
service 处理:
/**
* 批量删除消息操作
* @param ids
*/
public void deleteBatch(String[] ids) {
mapper.deleteBatch(ids);
}
mapper 处理:
void deleteBatch(String[] ids);
mapper.xml处理:
<delete id="deleteBatch">
delete from sys_message where id in
<foreach collection="array" item="id" index="index" open="(" separator="," close=")">
#{id}
</foreach>
</delete>

常用操作提高效率 之 for 与in的更多相关文章
- 快速上手Mac效率神器Alfred以及Alfred常用操作
前言 Alfred,想必大家就算没用过也耳闻过.Alfred是一个让你可以丢掉鼠标的神器.很多读者可能之前认为Alfred的学习成本高,或者感觉它太复杂,而望之却步.其实Alfred并非高不可攀,本文 ...
- [编辑器]vim常用操作
我是ide的用户,对于vim一只停留在:打开.看.写.关闭基本操作,因为现在更多的接触linux服务器,所以为了提高 效率,用好vim是必备技能!下面罗列一些vim的常用操作,用做备忘(不断更新): ...
- 利用mock提高效率
利用mock提高效率 谈到mock,就不得不讲前后端分离.理想情况下前后端不分离,由全栈的人以product和infrastructure的维度进行开发,效率是最高的.近些年来业务的复杂度越来越高,真 ...
- 【转】.NET程序员提高效率的70多个开发工具
原文:.NET程序员提高效率的70多个开发工具 工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为各ASP.NET 开发者介绍一些高效实用的工具,涉及SQL 管理,VS插件 ...
- sql server建库建表(数据库和数据表的常用操作)
数据库和数据表 (开发常用 操作) 一,数据库的创建 一个SQLServer 是由两个文件组成的:数据文件(mdf) 和日志文件(ldf),所以我们创建数据库就是要为其指定数据库名.数据文件和日志文件 ...
- 《.NETer提高效率——环境部署》
初衷 兵马未动,粮草先行. 电脑坏了or换工作等需要重装系统. 开发运维一把梭. 与时俱进. 记忆力差,需要文字记录. 因为懒... 目的 通过学习 Linux+docker+kubernetes+C ...
- .NET中DataTable的常用操作
一.目的 在各种.NET开发中,DataTable都是一个非常常见且重要的类型,在与数据打交道的过程中可以说是必不可少的对象. 它功能强大,属性与功能也是相当丰富,用好的话,使我们在处理数据时,减少很 ...
- 用ArcGIS?37个Arcmap常用操作技巧可能帮到您
1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关. 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Sn ...
- 提高效率的Linux命令
提高效率的Linux命令 一.fc 二.disown 三.Ctrl + x +e 四.!! 两个感叹号 五.一次创建多个目录或文件 六.tee 七.删除从开头到光标处的命令文本 八.删除从光标到结尾处 ...
随机推荐
- ABAP的权限检查跟踪(Authorization trace)工具
事务码 STAUTHTRACE 1. 点击"Activate Trace" button激活跟踪: 可以看到跟踪状态已经处于打开状态. 在同一个application server ...
- OAuth 2.0协议在SAP产品中的应用
阮一峰老师曾经在他的博文理解OAuth 2.0里对这个概念有了深入浅出的阐述. http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 本文会结合我 ...
- Android坡度计
艺术来源于生活,对我来说,编程也是一门艺术.今天发布这篇技术博客,就是我跟朋友在一次爬山过程中的争论,他跟我说那座山至少45度,我说没有,最多30度.我们彼此争论不休,于是我就想,为啥不写个手机程序来 ...
- 前端HTML5几种存储方式
h5之前,存储主要是用cookies.cookies缺点有在请求头上带着数据,大小是4k之内.主Domain污染. 主要应用:购物车.客户登录 对于IE浏览器有UserData,大小是64k,只有IE ...
- 【[SCOI2007]修车】
题目 只能做网络流度日了 当然是要对每个修车的人拆点,把每个人拆成\(n\)个点用于接收不同时刻的车 每个车\(i\)向每个时刻\(k\)的人\(j\)连边,边权为\(t[i][j]*k\)这样就是这 ...
- 使用ToDateTime方法转换日期显示格式
实现效果: 知识运用: Convert类的ToDateTime方法:(将字符串转化为DateTime对象) public static DateTime ToDateTime(string value ...
- javascript dom 操作详解 js加强
js加强操作实现代码. 1 .文档里的每个节点都有属性 nodeName . nodeValue . nodeType nodeName 文本节点的的节点名是 #text , nodeName 是只读 ...
- React.js 中文文档
转自http://react-china.org/t/react-js/398的jsgeeker 中文文档地址 http://reactjs.cn GitHub地址 https://github.co ...
- ATK系列库介绍
1.一个完整支持分布式服务框架: 2.代码生成工具,可快速生成基于服务框架的应用: 3.其他支持库 4.完整代码见https://github.com/azthinker 目标:使应用开发,低代码.高 ...
- Oracle-01-数据库分类/oracle sql*plus常用命令
一.数据库分类 一.数据库分类1.小型数据库:access.foxbase2.中型数据库:informix.sql server.mysql3.大型数据库:sybase.db2.oracle 二.项目 ...