最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

oracle+mybatis 使用動態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert

 更新時間:2015年11月01日 15:35:29   作者:_coding_  
最近接了一個項(xiàng)目,其中項(xiàng)目需求,有一個非常糾結(jié)的問題,由于業(yè)務(wù)的關(guān)系,DB的數(shù)據(jù)表無法確定,在使用過程中字段可能會增加,這樣在insert時給我造成了很大的困擾。接下來,通過本篇文章給大家介紹oracle+mybatis 使用動態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert

最近做項(xiàng)目遇到一個挺糾結(jié)的問題,由于業(yè)務(wù)的關(guān)系,DB的數(shù)據(jù)表無法確定,在使用過程中字段可能會增加,這樣在insert時給我造成了很大的困擾。

先來看一下最終我是怎么實(shí)現(xiàn)的:

<insert id="batchInsertLine" parameterType="HashMap"> 
   <![CDATA[ 
   INSERT INTO tg_fcst_lines(${lineColumn}) 
   select result.*,sq_fcst_lines.nextval from( 
   ]]> 
   <foreach collection="lineList" item="item" index="index" separator="union all" > 
    (select   
    <foreach collection="item" index="key" item="_value" separator=","> 
      #{_value} 
    </foreach>  
    from dual) 
   </foreach> 
   <![CDATA[) result]]>   
 </insert> 

由于數(shù)據(jù)表不確定,所以我無法確定我要insert的字段,由于是批量insert,確定value值也挺費(fèi)勁。
我傳給mybatis的參數(shù)是一個map:

Map insertMap = new HashMap(); 
insertMap.put("lineColumn",lineColumn);    
insertMap.put("lineList", lineList); 

lineColumn是一個字符串,lineList是一個list:

List<Map> lineList = new ArrayList(); 

lineList里存放的是map,map的鍵對應(yīng)數(shù)據(jù)表的字段,值是你要insert的值,這樣就可以通過foreach取出list的值作為insert語句的value,但由于map是無序的,存放的順序和
遍歷時取值的順序不一定一致,所以為了確保insert字段和值可以一一對應(yīng),可以通過遍歷一次map來取出key拼接一個字符串作為insert的字段

String lineColumn = "";  //拼接的SQL,作為insert語句的一部分 
[java] view plaincopy
Map<String,String> lineMap = lineList.get(0); 
for (String key : lineMap.keySet()) { 
  lineColumn +=key+","; 
} 
lineColumn +="LINE_ID"; 

這里的line)id是一個自增的字段,在語句中直接寫序列會報(bào)錯,所以先遍歷list將取出的值作為result,在取出result的所有值,連同序列一起作為insert的值。

在取值的時候使用兩個foreace嵌套來實(shí)現(xiàn),外層的foreach遍歷list,里層的foreach遍歷map。

以上內(nèi)容是本文給大家介紹的oracle+mybatis 使用動態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert的全部敘述,希望大家喜歡。

相關(guān)文章

最新評論

乌拉特前旗| 杭州市| 长乐市| 丽水市| 普格县| 东源县| 武清区| 崇文区| 德庆县| 库车县| 体育| 西平县| 神木县| 宁武县| 衡阳县| 秦安县| 河北省| 无极县| 巴林右旗| 浙江省| 和龙市| 太和县| 黎川县| 金乡县| 延寿县| 高密市| 吉木乃县| 尼勒克县| 和平区| 凤庆县| 广东省| 遂川县| 二连浩特市| 东海县| 且末县| 赫章县| 建宁县| 大宁县| 宜丰县| 越西县| 承德县|