关于mybatis 在C#.Net中批量增,删,改
2013-12-16 17:35
302 查看
发现很久没有更新空间里的日志了,有时候实在忙没有时间记录,有时候又觉得自己整理的不够清晰,还是缓缓在记录吧。
下面直接进入正题
对于急需方法的阅读者 可以直接转至代码以下忽略
对于数据库进行操作的类型一般来说有四种:增删改查。
四种操作中只有查,是不会更改原有数据信息的情况下的操作。而查也往往是,Erp 或应用软件操作次数最多,数据量最大的一种操作。
对于查的优化,我会在以后的文章中提到,现在先不讨论。
对于增,删,改的操作,现在经常出现的问题就是如何根据主键批量删除或新增数据。
往往由于批量操作。大量的连接和释放数据库操作,造成性能浪费。下边就讲解以下 我们在项目中是如何解决这个问题的(此处感谢汪涛的贡献)
删除
![](http://c.hiphotos.bdimg.com/album/pic/item/e7cd7b899e510fb3d51f48e0db33c895d1430c46.jpg)
<deleteid="DeleteMulti"parameterClass="ArrayList">
DELETE FROM [Area]
WHERE [SysNo] IN
<iterateopen="(" close=")" conjunction=",">
#[]#
</iterate>
</delete>
更新
ps 现在 批量更新 只能解决 更新相同的内容 不能各自取值,这个问题我们也没解决 ,如果你有好办法那么轻留言
![](http://e.hiphotos.bdimg.com/album/pic/item/960a304e251f95ca7df7adc1cb177f3e67095242.jpg)
<updateid="UpdateMulti" parameterClass="System.Collections.IDictionary">
UPDATE [TaskDetail]
SET [Status]=#InvalidStatus#,[ModifyUserID] = #ModifyUserID#,[ModifyUserName] = #ModifyUserName#,[RowModifyDate]=GETDATE()
WHERE [SysNo] IN
<iterateproperty="ListTaskDetailSysNo" open="(" close=")" conjunction=",">
#ListTaskDetailSysNo[]#
</iterate>
插入(迭代values)
<insertid="InsertMulti"parameterClass="ArrayList">
<![CDATA[
INSERT INTO [CartonDetail] (
[SysNo]
,[CartonSysNo]
,[CartonCode]
,[CartonLineNo]
,[PickSysNo]
,[SKUDesc]
,[SKUCode]
,[QtyPacked]
,[Price]
,[CreateUserID]
,[CreateUserName]
,[ModifyUserID]
,[ModifyUserName]) VALUES
]]>
<iterateconjunction="," open=""close="">
<![CDATA[
(#[].SysNo#,
#[].CartonSysNo#,
#[].CartonCode#,
#[].CartonLineNo#,
#[].PickSysNo#,
#[].SKUDesc#,
#[].SKUCode#,
#[].QtyPacked#,
#[].Price#,
#[].CreateUserID#,
#[].CreateUserName#,
#[].CreateUserID#,
#[].CreateUserName#)
]]>
</iterate>
</insert>
下面直接进入正题
对于急需方法的阅读者 可以直接转至代码以下忽略
对于数据库进行操作的类型一般来说有四种:增删改查。
四种操作中只有查,是不会更改原有数据信息的情况下的操作。而查也往往是,Erp 或应用软件操作次数最多,数据量最大的一种操作。
对于查的优化,我会在以后的文章中提到,现在先不讨论。
对于增,删,改的操作,现在经常出现的问题就是如何根据主键批量删除或新增数据。
往往由于批量操作。大量的连接和释放数据库操作,造成性能浪费。下边就讲解以下 我们在项目中是如何解决这个问题的(此处感谢汪涛的贡献)
删除
![](http://c.hiphotos.bdimg.com/album/pic/item/e7cd7b899e510fb3d51f48e0db33c895d1430c46.jpg)
<deleteid="DeleteMulti"parameterClass="ArrayList">
DELETE FROM [Area]
WHERE [SysNo] IN
<iterateopen="(" close=")" conjunction=",">
#[]#
</iterate>
</delete>
更新
ps 现在 批量更新 只能解决 更新相同的内容 不能各自取值,这个问题我们也没解决 ,如果你有好办法那么轻留言
![](http://e.hiphotos.bdimg.com/album/pic/item/960a304e251f95ca7df7adc1cb177f3e67095242.jpg)
<updateid="UpdateMulti" parameterClass="System.Collections.IDictionary">
UPDATE [TaskDetail]
SET [Status]=#InvalidStatus#,[ModifyUserID] = #ModifyUserID#,[ModifyUserName] = #ModifyUserName#,[RowModifyDate]=GETDATE()
WHERE [SysNo] IN
<iterateproperty="ListTaskDetailSysNo" open="(" close=")" conjunction=",">
#ListTaskDetailSysNo[]#
</iterate>
插入(迭代values)
<insertid="InsertMulti"parameterClass="ArrayList">
<![CDATA[
INSERT INTO [CartonDetail] (
[SysNo]
,[CartonSysNo]
,[CartonCode]
,[CartonLineNo]
,[PickSysNo]
,[SKUDesc]
,[SKUCode]
,[QtyPacked]
,[Price]
,[CreateUserID]
,[CreateUserName]
,[ModifyUserID]
,[ModifyUserName]) VALUES
]]>
<iterateconjunction="," open=""close="">
<![CDATA[
(#[].SysNo#,
#[].CartonSysNo#,
#[].CartonCode#,
#[].CartonLineNo#,
#[].PickSysNo#,
#[].SKUDesc#,
#[].SKUCode#,
#[].QtyPacked#,
#[].Price#,
#[].CreateUserID#,
#[].CreateUserName#,
#[].CreateUserID#,
#[].CreateUserName#)
]]>
</iterate>
</insert>
相关文章推荐
- 关于批量数据更新的问题(C#高性能)
- 关于mysql-connector-net和C#.net
- Asp.net(C#)对文件操作的方法(读取,删除,批量拷贝,删除...)
- C#.NET 关于URL重写技术汇总
- [C#.NET]关于弹出对话框的函数代码!
- 节假日批量设置的C#.NET程序代码参考 推荐
- asp.net 关于C#时间24进制显示问题
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 旧话重提_关于vb, vb.net, c#.net下dll远线程注入
- C#.net文件批量上传解决方案附下载(swfupload)
- 使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- C#.net文件批量上传解决方案附下载(swfupload) .
- 使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- 关于asp.net c#中对cookie的操作
- 文件批量上传组件分享(C# asp.net Ajax)上传图片
- 关于 aps.net<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 的认识
- 使用ASP.net(C#)批量上传图片并自动生成缩略图,文字水印图,图片水印图
- 关于C#.Net中事件(event)、委托(delegate)和方法的一点理解
- C#批量保存方法-利用Net SqlBulkCopy 批量导入数据库,速度超快-通用方法源码提供
- 关于C# .NET网页跳转七种方法