国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

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

2020-07-26 14:14:34
字體:
供稿:網(wǎng)友

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

先來看一下最終我是怎么實(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ù)是一個(gè)map:

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

lineColumn是一個(gè)字符串,lineList是一個(gè)list:

List<Map> lineList = new ArrayList(); 

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

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

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

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 双城市| 米林县| 吉首市| 阿瓦提县| 那坡县| 丰镇市| 靖宇县| 平山县| 凌源市| 屯昌县| 洛南县| 湘潭市| 沂南县| 克拉玛依市| 陕西省| 湘阴县| 比如县| 华池县| 永顺县| 郁南县| 左权县| 平乐县| 宁河县| 乐陵市| 榆林市| 西城区| 大丰市| 高安市| 溧水县| 安陆市| 宣恩县| 禹州市| 星子县| 齐齐哈尔市| 铜山县| 德兴市| 沙洋县| 大安市| 承德县| 鄂托克前旗| 文山县|