IBatis.Net 批量插入資料

來源:互聯網
上載者:User

今天折騰了一下午的批量插入,差點沒辦法就用迴圈插入了,本人認為這是最不智能的一種做法了...不過最終還是搞定了..

下面給大家說幾點需要注意的地方.

我利用了iterate標籤來做的.有哪位大蝦有更好的方法一定要賜教.

先看iterate標籤幾個屬性的介紹:

prepend-加在open指定的符號之前的符號,添加在語句的前面(可選)

property-類型為ArrayList的用於遍曆的元素, 這個必須是一個IList類型(可選)

open-整個遍曆內容體開始的字串,用於定義括弧(可選)

close-整個遍曆內容體結束的字串,用於定義括弧(可選)

conjunction-每次遍曆內容之間的字串,可以空格,AND或OR(可選)

我上文中寫到得集合是ArrayList,因為IBatis.net貌似支援的集合類型只有ArrayList,貌似還不支援泛型集合,我今天搞了半天這裡.

配置批量插入的設定檔

<!--大量匯入資料-->
    <insert id="AddTmpResource"  parameterClass="ArrayList">
      <iterate conjunction=" " open="" close=""  >
        <![CDATA[          

<insert id="AddTest"  parameterClass="ArrayList">
          <iterate conjunction=" " open="" close=""  >
              insert into test ([tid], [tna]) values
              (#[].tid#, #[].tna#)
          </iterate>
      </insert>


        ]]>
      </iterate>
    </insert>

說明:

parameterClass="ArrayList" 這裡一定要是ArrayList ,IBatis.net只識別這種集合類型.

<iterate conjunction=" " open="" close=""  > 因為我要迴圈插入,所以這裡全部留空了,conjunction 這個一定要帶一個空格.

#[].PhoneNum# 這種格式其實就是遍曆時候的運算式,理解為 ArrayList[i].PhoneNum,之前看了一些java中的批量插入,[]之前需要放上變數名,額..這裡不要放,否則會報錯.

$[].TableName$ 我把資料庫也設定能動態,也為了說明 # 和$ 有什麼不同.

‘#’ 可以簡單理解為預留位置,類似於ADO.NET的參數化, ‘$’ 可以理解為拼接字串,用這種時候千萬要注意sql注入.

C#代碼就很簡單了..


IList arraylist = new ArrayList();            var comInput1 = new ComInput();     //繼承於IDiction<string,string>            comInput1.SetPm("tid", "4");            comInput1.SetPm("tna", "4444444444");            arraylist.Add(comInput1);            var comInput2
= new ComInput();            comInput2.SetPm("tid", "2");            comInput2.SetPm("tna", "2222");            arraylist.Add(comInput2);            var comInput3 = new ComInput();            comInput3.SetPm("tid", "3");            comInput3.SetPm("tna", "3333333333"); 
          arraylist.Add(comInput3);            // var dao = new BaseDao();            BaseDao.SqlMapper.Insert("OrderOnline_News.AddTest", arraylist);  //OrderOnline_News.AddTest啟用了ibatis.net命名空間,


當然上文提到的TableName也在這個集合中.

批次更新,子查詢都可以用這個標籤iterate.關鍵要注意的是.net中的集合!

 

還有更好的批量插入資料的方法的朋友不妨賜教一下..

難道IBatis.Net 不支援泛型嗎?知道的說說噢..

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.