亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

最近做項(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 plaincopy
Map<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的全部敘述,希望大家喜歡。

相關(guān)文章

  • oracle數(shù)據(jù)庫(kù)超全的多表查詢連接

    oracle數(shù)據(jù)庫(kù)超全的多表查詢連接

    這篇文章主要給大家介紹了關(guān)于oracle數(shù)據(jù)庫(kù)超全的多表查詢連接的相關(guān)資料,多表連接查詢實(shí)際上是通過各個(gè)表之間公共字段的關(guān)鍵性來查詢數(shù)據(jù)的,它是關(guān)系數(shù)據(jù)庫(kù)查詢的最主要的特征,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Oracle中分組查詢group by用法規(guī)則詳解

    Oracle中分組查詢group by用法規(guī)則詳解

    這篇文章主要介紹了Oracle中分組查詢group by用法規(guī)則詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Oracle 中生成流水號(hào)的方法

    Oracle 中生成流水號(hào)的方法

    這篇文章主要介紹了Oracle 中生成流水號(hào)的方法 的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • 如何解決Oracle數(shù)據(jù)表入庫(kù)中文亂碼問題

    如何解決Oracle數(shù)據(jù)表入庫(kù)中文亂碼問題

    Oracle數(shù)據(jù)庫(kù)在處理中文數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到亂碼問題,導(dǎo)致數(shù)據(jù)無法正常顯示和處理,這是因?yàn)镺racle數(shù)據(jù)庫(kù)默認(rèn)的字符集為US7ASCII,無法識(shí)別中文字符,通過修改數(shù)據(jù)庫(kù),客戶端和應(yīng)用程序字符集,將數(shù)據(jù)轉(zhuǎn)換為正確的字符集,可以避免亂碼問題
    2024-02-02
  • Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)

    Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的方法

    Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的方法

    Oracle是一種廣泛應(yīng)用于企業(yè)級(jí)數(shù)據(jù)庫(kù)系統(tǒng)的軟件,但在操作過程中可能會(huì)發(fā)生誤刪除數(shù)據(jù)的情況,這時(shí)就需要進(jìn)行數(shù)據(jù)恢復(fù)操作,這篇文章主要給大家介紹了關(guān)于Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • Oracle數(shù)據(jù)庫(kù)安全策略

    Oracle數(shù)據(jù)庫(kù)安全策略

    Oracle數(shù)據(jù)庫(kù)安全策略...
    2007-03-03
  • Window下Oracle Database 11g 發(fā)行版2安裝教程

    Window下Oracle Database 11g 發(fā)行版2安裝教程

    這篇文章主要為大家詳細(xì)介紹了Window下Oracle Database 11g 發(fā)行版2安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Oracle的默認(rèn)用戶密碼

    Oracle的默認(rèn)用戶密碼

    創(chuàng)建表空間和用戶時(shí),需要的時(shí)候竟然忘記了密碼,試了好多次都沒連接上,進(jìn)而用戶也被鎖定,下面就教您處理Oracle默認(rèn)用戶的密碼問題的方法,希望對(duì)和我一樣情況的朋友們有所幫助
    2012-07-07
  • ORACLE中段的HEADER_BLOCK示例詳析

    ORACLE中段的HEADER_BLOCK示例詳析

    這篇文章主要給大家介紹了關(guān)于ORACLE中段的HEADER_BLOCK的相關(guān)資料,文中通過是示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09

最新評(píng)論