一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - oracle+mybatis 使用動態Sql當插入字段不確定的情況下實現批量insert

oracle+mybatis 使用動態Sql當插入字段不確定的情況下實現批量insert

2019-12-21 17:29_coding_ Oracle

最近接了一個項目,其中項目需求,有一個非常糾結的問題,由于業務的關系,DB的數據表無法確定,在使用過程中字段可能會增加,這樣在insert時給我造成了很大的困擾。接下來,通過本篇文章給大家介紹oracle+mybatis 使用動態Sq

最近做項目遇到一個挺糾結的問題,由于業務的關系,DB的數據表無法確定,在使用過程中字段可能會增加,這樣在insert時給我造成了很大的困擾。

先來看一下最終我是怎么實現的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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>

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

?
1
2
3
Map insertMap = new HashMap();
insertMap.put("lineColumn",lineColumn);   
insertMap.put("lineList", lineList);

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

?
1
List<Map> lineList = new ArrayList();

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

?
1
2
3
4
5
6
7
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是一個自增的字段,在語句中直接寫序列會報錯,所以先遍歷list將取出的值作為result,在取出result的所有值,連同序列一起作為insert的值。

在取值的時候使用兩個foreace嵌套來實現,外層的foreach遍歷list,里層的foreach遍歷map。

以上內容是本文給大家介紹的oracle+mybatis 使用動態Sql當插入字段不確定的情況下實現批量insert的全部敘述,希望大家喜歡。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女靠逼的视频 | 超h 超重口 高h 污肉1v1 | 精品亚洲欧美中文字幕在线看 | 免费在线公开视频 | 四虎tv在线观看884aa | 亚洲免费在线看 | 91爱爱网站 | 爱情岛论坛亚洲自拍 | 国产成人精品男人的天堂538 | 好男人社区www影院在线观看 | 国产成人免费高清激情视频 | 国色天香视频资源网 | 九九久久国产 | 国内精品福利丝袜视频_速 国内精品91久久久久 | 婷婷久久综合九色综合九七 | 久久伊人在| 精品久久久久中文字幕日本 | 国产成人影院 | 青草午夜精品视频在线观看 | 456亚洲老头视频 | 日韩视频一区二区三区 | 国产91网站在线观看 | 911精品国产亚洲日本美国韩国 | 色综合色狠狠天天久久婷婷基地 | 轻轻色在线视频中文字幕 | 四虎影视在线看免费 720p | 99久久精品国产片久人 | 日韩精品首页 | 免费jizz在在线播放国产 | 精品久久久久久久国产潘金莲 | 国内精品久久久久香蕉 | 日本高清色视影www日本 | 亚洲国产天堂在线观看 | 包臀裙女教师波多野结衣 | 成年人黄视频在线观看 | 8x8拨擦拨擦华人免费 | 美女脱了内裤打开腿让人桶网站o | 免费在线视频观看 | 美女奶口隐私免费视频网站 | 免费视频专区一国产盗摄 | 亚洲国产经典 |