zoukankan      html  css  js  c++  java
  • IBatis.Net 批量插入数据

    利用了iterate标签来做的:

    先看iterate标签几个属性的:

    prepend-加在open指定的符号之前的符号,添加在语句的前面(可选)
    
    property-类型为ArrayList的用于遍历的元素, 这个必须是一个IList类型(可选)
    
    open-整个遍历内容体开始的字符串,用于定义括号(可选)
    
    close-整个遍历内容体结束的字符串,用于定义括号(可选)
    
    conjunction-每次遍历内容之间的字符串,可以空格,AND或OR(可选)

    配置文件如下:

    <!--批量导入数据-->
        <insert id="AddTmpResource"  parameterClass="ArrayList">
          <iterate conjunction=" " open="" close=""  >
            <![CDATA[  
            insert into $[].TableName$ ([PhoneNum], [Name], [Resource]) values  
                (#[].PhoneNum#, #[].Name#, #[].Resource#)  
            ]]>
          </iterate>
        </insert>

    说明:

    parameterClass="ArrayList" 这里一定要是ArrayList ,IBatis.net只识别这种集合类型.

    <iterate conjunction=" " open="" close=""  > 因为我要循环插入,所以这里全部留空了,conjunction 这个一定要带一个空格.

    #[].PhoneNum# 这种格式其实就是遍历时候的表达式,理解为 ArrayList[i].PhoneNum,之前看了一些java中的批量插入,[]之前需要放上变量名,额..这里不要放,否则会报错.

    $[].TableName$ 我把数据库也设置能动态的,也为了说明 # 和$ 有什么不同.

    ‘#’ 可以简单理解为占位符,类似于ADO.NET的参数化, ‘$’ 可以理解为拼接字符串,用这种时候千万要注意sql注入.

    C#代码就很简单了..

    1 IList arraylist = new ArrayList();
    2 ....//此处省略获取数据的代码
    3 //arraylist 是泛型
    4 Mapper.CRM.Insert("AddTmpResource", arraylist);
    屌丝一直很屌
  • 相关阅读:
    对于函数中多个返回值的处理
    Docker-compose 安裝单机版redis
    设计模式七大设计原则
    UML 设计技巧
    使用Docker 容器配置nexus3.29 私有仓库
    分布式消息Kafka通信原理分析
    分布式消息Kafka通信
    使用docker 搭建nexus3.29
    分布式消息Kafka初步认识及基本应用
    Dubbo 常用配置及源码分析
  • 原文地址:https://www.cnblogs.com/xiashenbin/p/3555848.html
Copyright © 2011-2022 走看看