关于mybatis 在C#.Net中批量增,删,改

 

发现很久没有更新空间里的日志了,有时候实在忙没有时间记录,有时候又觉得自己整理的不够清晰,还是缓缓在记录吧。

下面直接进入正题

 

对于急需方法的阅读者  可以直接转至代码以下忽略

 

对于数据库进行操作的类型一般来说有四种:增删改查。

四种操作中只有查,是不会更改原有数据信息的情况下的操作。而查也往往是,Erp 或应用软件操作次数最多,数据量最大的一种操作。

对于查的优化,我会在以后的文章中提到,现在先不讨论。

对于增,删,改的操作,现在经常出现的问题就是如何根据主键批量删除或新增数据。

往往由于批量操作。大量的连接和释放数据库操作,造成性能浪费。下边就讲解以下  我们在项目中是如何解决这个问题的(此处感谢汪涛的贡献)

删除  

<deleteid="DeleteMulti"parameterClass="ArrayList">

     DELETE FROM [Area]

     WHERE [SysNo] IN

      <iterateopen="(" close=")" conjunction=",">

        #[]#

      </iterate>

</delete>

更新

ps  现在  批量更新 只能解决   更新相同的内容  不能各自取值,这个问题我们也没解决 ,如果你有好办法那么轻留言

 

    <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>

 

posted @ 2013-12-16 17:35  王若伊_恩赐解脱  阅读(1879)  评论(0编辑  收藏  举报