<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Mybatis批量insert 返回主鍵值和foreach標簽詳解

       

      Mybatis批量insert 返回主鍵

      Mybatis從3.3.1版本開始,支持批量插入后返回主鍵ID。首先對于支持自增主鍵的數據庫使用useGenerateKeys和keyProperty,對于不支持生成自增主鍵的數據庫使用selectKey標簽。類似《MyBatis 返回insert操作主鍵》中單條插入。

      使用批量插入,可以減少和數據庫交互的次數,但是,數據量應該做一個控制,和for循環類似。首先定義Java Bean Instance:

      import java.io.Serializable;

       

      /**

       * 實例表實體類

       */

      public class Instance implements Serializable {

          private static final long serialVersionUID = 2288066394131442938L;

       

          private Long instanceId;

          private String infos;

          private String createTime;

          private String updateTime;

          // omit getter, setter and toString()

      }

      DAO層:

      int addInstances(List<Instance> instanceDtos);

      函數返回值是int類型,表示影響的行數。mapper中SQL寫法類似于執行單條insert操作,只是使用了foreach標簽:

      <insert id="addInstances" parameterType="list" useGeneratedKeys="true" keyProperty="instanceId">

         insert into instance (infos,create_time,update_time)

         values

          <foreach collection="list" item="myEg" index="index" separator=",">

               (#{myEg.infos},now(),now())

           </foreach>

       </insert>

      執行后,自增長的id都可以從instanceDtos中找到。由于myEg對應于Java對象,所以,讀取其中的infos屬性時,需要使用myEg.infos。

      MyBatis foreach標簽詳解

      下面梳理一下foreach標簽。foreach主要用于構建in條件,它可以在SQL語句中迭代入參List或者Array。屬性主要有 item,index,collection,open,separator,close,解釋如下:

      item表示集合中每一個元素進行迭代時的別名,便于在foreach中使用;

      index指定一個名字,用于標志當前迭代位置;

      open表示該語句以什么開始,如拼湊in子語句的左括號“(”;

      separator分隔符,表示每次迭代之間以什么符號分隔;

      close表示以什么結束,如拼湊in子語句的右括號“)”。

      在所有屬性中,最復雜非collection屬性莫屬,該屬性在foreach標簽中必須指定的。在不同情況下,該屬性的值是不一樣的,主要有以下3種情況:

      1.若傳入的是單參數且參數類型是List,則collection屬性值為list;

      2.若傳入的是單參數且參數類型是Array數組,則collection的屬性值為array;

      3.若傳入的參數是多個,則把它們封裝成Map,當然單參數也可以封裝成Map,collection的屬性值為Map中的key;

      上一節中,addInstances函數的入參只有一個,且是List,所以,collection屬性值為list。如下函數

      List<Instance> getInstanceInfo(new Long[]{1L, 3L});

      請求的時候,SQL如下:

      <select id="getInstanceInfo" resultType="list">

          SELECT instance_id "instanceId", infos

            FROM instance

           WHERE instance_id IN

          <foreach item="oneId" index="index" collection="array"

              open="(" separator="," close=")" >

              #{oneId}

          </foreach>

      </select>

      oneId表示一個具體的元素,所以,用#{oneId}直接讀取就行。

      posted @ 2019-01-12 17:23  樓蘭胡楊  閱讀(7519)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 色吊丝一区二区中文字幕| 中文字幕乱码中文乱码毛片| 精品人妻系列无码一区二区三区| 日韩福利片午夜免费观着| 波多野42部无码喷潮| 九九热久久这里全是精品| 国产精品久久久久7777按摩| 亚洲国产成人不卡高清麻豆| 赫章县| 亚洲精品入口一区二区乱| 偷看少妇自慰xxxx| 久久亚洲综合精品成人网| 亚洲av男人电影天堂热app| 黄色三级亚洲男人的天堂| 精品久久久中文字幕人妻| 久久久久青草线蕉综合超碰| 鲁丝片一区二区三区免费| 国产成人精品一区二区无| 五月综合网亚洲乱妇久久| 秋霞电影网| 久章草在线精品视频免费观看| 亚洲天堂激情av在线| 日韩欧美在线综合网另类| 高清无码爆乳潮喷在线观看| 人妻少妇精品无码专区二区| 国产精品小粉嫩在线观看| awww在线天堂bd资源在线| 亚洲色在线v中文字幕| 免费ā片在线观看| 亚洲成人av一区二区| 精品久久久久中文字幕日本| 亚洲国产大片永久免费看| 国产精品久久毛片av大全日韩| 国产一区二区三区黄色片| 亚洲精品国产成人| 国产成人女人在线观看| 上司人妻互换中文字幕| 在线精品亚洲区一区二区| 深田えいみ禁欲后被隔壁人妻| 日韩有码中文字幕av| 国产稚嫩高中生呻吟激情在线视频|