1. 程式人生 > >分析如下for迴圈的寫法不同之處

分析如下for迴圈的寫法不同之處

方式1:

fjList.forEach(examQuestionattachment -> {                                               
    ExamQuestionAttachment examQuestionAttachment = new ExamQuestionAttachment();        
    examQuestionAttachment.setQuestionSmallId(examQuestionSmall.getId());                
    examQuestionAttachment
.setType(examQuestionattachment.getAttachmenttype()); // 型別 examQuestionAttachment.setPath(copyUrl + examQuestionattachment.getPath()); // 地址 examQuestionAttachmentMapper.insertSelective(examQuestionAttachment); });

方式2:

    ExamQuestionAttachment examQuestionAttachment = new ExamQuestionAttachment();        
    examQuestionAttachment.setQuestionSmallId(examQuestionSmall.getId()); 
fjList.forEach(examQuestionattachment -> {
    examQuestionAttachment.setType(examQuestionattachment.getAttachmenttype()); // 型別    
examQuestionAttachment.setPath(copyUrl + examQuestionattachment.getPath()); // 地址 examQuestionAttachmentMapper.insertSelective(examQuestionAttachment); });

某次任務中,採用的是方式2的迴圈方式,結果程式報錯,提示是主鍵重複。記錄分析過程如下:

  1. 理論分析,既然是主鍵重複,說明迴圈開始,要不然不可能會重複。
  2. 主鍵重複,說明第二次插入的物件的id和第一次的相同,也就是examQuestionAttachment這個物件在第一次插入資料後得到了一個id,並且在迴圈的時候,到了第二次插入的物件中。
  3. mybatis中涉及到資料插入返回主鍵的配置是:configuration下的use-generated-keys,當use-generated-keys=true時,資料插入後會得到一個id,並返回到插入的物件當中,所有我們來繼續驗證。
  4. use-generated-keys=true在方式2中會報錯,so 設定use-generated-keys=false,然後重新啟動專案,執行之前程式,資料插入正常。
  5. 方式1不用多說,在for迴圈中new新物件,不管id返回與否,資料插入都沒有問題。

總結:use-generated-keys=true時要注意new物件的操作是否在for迴圈中,確保id不重複。

相關推薦

分析如下for迴圈寫法不同

方式1:fjList.forEach(examQuestionattachment -> { ExamQuestionAttachment examQuestionAt

JS 陣列中有 undefined 值,用 for 迴圈for…in 迴圈遍歷的不同

先說結論:在陣列遍歷時一般最好使用for迴圈遍歷 var arr=new Array(); arr[0]="P90"; arr[3]="AWM"; arr[5]="AK47"; console.log("//for 迴圈遍歷"); for(let i=0;i<arr

分析決策樹算法和邏輯回歸算法的不同

人工智能 機器學習 首先我們導入一組airplan.xlsx數據。數據表中的age表示年齡、FLIGHT_COUNT表示飛行次數、BASE_POINTS_SUM表示飛行裏程、runoff_flag表示流失與否,定義1為正樣本,代表已流失。 現在讓我們來看一下最後的效果:可以看到決策樹算法和邏輯回歸算法

pyQt5 使用qtdesigner生成程式碼後的程式碼分析 和中文幫助文件程式碼不同

1,生成程式碼後加入幾行事件處理機制,點選按鈕 出現hello # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'untitled.ui' # # Created

for迴圈與while迴圈的區別

在編寫程式時,如果你需要根據一些需求進行多次判斷或選擇,這時候肯定會用到迴圈,但是迴圈的方法也不是隻有一種,常用的兩種是for迴圈和while迴圈,兩種迴圈的應用場景也是有所不同的,具體如下: 從應用場景方面考慮: for迴圈適用於已知迴圈次數,while迴圈適用於未知迴圈次數。 那麼在

iOS6和iOS7處理push不同,解決反復push,-(void) application: didReceiveRemoteNotification: fetchCompletionHandl

前臺 啟動圖 nstat and bsp pro ica 應該 正文 如果讀者已經知道push的基本知識,本文僅僅是解決一些適配,兼容問題。如果對push 不甚了解,參考以下的文章 1.【iOS push全方位解析】(一) push的概述 2.【iOS push

Appcan、apicloud、HBuilder 不同解析

硬件加速 時間 js框架 一個 免費 打開 htm c++ sign 來源:http://www.mamicode.com/info-detail-1129829.html 現在Hybrid app是一中非常火熱的開發模式,在國內對應的開發工具也亂象叢生,有WeX5、cr

人工智能與機器學習的不同

沒有 機器學習 決定 深度學習 支持向量 傳統 模擬 性能 處理 人工智能早已不是一個新名詞,它的發展歷史已經有幾十年。從80年代早期開始,當時計算機科學家設計出可以學習和模仿人類行為的算法。在學習方面,最重要的算法是神經網絡,但由於模型過於強大,沒有足夠的數據支持,導致不

JavaScript-//FOR/IN循環。當使用for/in循環遍歷關聯數組時,就可以清晰地體會到for/in的強大

get console turn 股票 toc asc ava cti val <script> //FOR/IN循環。當使用for/in循環遍歷關聯數組時,就可以清晰地體會到for/in的強大之處。 function getvalue(portfol

python中的list和array的不同 及轉換

索引查找 tex style best col 移除 b- 索引 nump python中的list和array的不同之處list是列表,可以通過索引查找數值,但是不能對整個列表進行數值運算In [96]: b=[1,2]In [97]: b[1]Out[97]: 2In

centos7與centos6常用命令不同匯總

centos 7(1)文件系統[CentOS6] ext4[CentOS7] xfs(2)內核版本[CentOS6] 2.6.x-x[CentOS7] 3.10.x-x(3)防火墻[CentOS6] iptables[CentOS7] firewalld(4)默認數據庫[CentOS6] MySQL[Cent

用python比較兩個文件中內容的不同, 並輸出行號和內容.

exist file diff pre ffline += == list cmp 代碼部分: ‘‘‘cmpfile.py - 比對兩個文件, 如果有不同之處, 打印內容和行號‘‘‘ import os class cmpFile: def __init__(

try except與try finally不同

RR 數字 ext con 失敗 eight err strong size try except與try finally不同之處   try//嘗試執行     {SomeCode}   except//出錯的時候執行, Except有特定的錯誤類型     {Som

共享權限和NTFS權限的不同

控制 RM 分區 了解 不可 get 共享 pdf 所有 我們在對磁盤進行管理時都需要一定的權限,大家一般性都會聽說過共享權限和NTFS權限,那麽這兩者有什麽區別呢,下面就和大家一起介紹一下。 一、共享權限 共享權限有三種:完全控制、更改、讀取 任務:了解共享權限 步驟:

HTTP和HTTPS協議有什麽不同

不同之處 style AR 通過 詳細 transfer pos 萬維網 log 定義: HTTP(hypertext transfer protocol)是超文本傳輸協議,是一種用來詳細規定了瀏覽器和萬維網服務器之間互相通信的規則,通過因特網傳送萬維網文檔的

棧和堆有什麽不同

font 存儲 text sta 程序員 align 垃圾回收 order pos 1、存儲對象不同:棧存儲的是局部變量,堆存儲的是實體。 2、釋放機制不同:棧的裏面存儲的局部變量生命周期結束,則就釋放掉局部變量;而堆的話,則是通過垃圾回收機制去釋放掉實體。 3、更新速度不

科普!小馬嘟嘟屬於幾線品牌 和其他童裝的不同

盡心 通過 顏色 出現 體重 小馬 截取 產品研發 負責人 家長都希望自己的孩子在各個方面都能夠出彩,於是給予自己的 孩子更好的東西,在童裝方面更能引起消費共鳴。因而一些品牌紛紛抓住家長們這一心理,任意提高其產品的價格,而家長們也無力改變。那麽,童裝市場上是否還有好的

js對象屬性 通過點(.) 和 方括號([]) 的不同

元素 標識符 ava index 寫法 () ole var person // js對象屬性 通過點(.) 和 方括號([]) 的不同之處 // 1、點操作符: 靜態的。右側必須是一個以屬性名稱命名的簡單標識符。屬性名用一個標識符來表示。標識符必

網絡分流器和移動互聯網分流器的不同詳解

匹配 服務器 動作 pos 管控 a20 轉換成 特征 同時 網絡分流器通常用於網絡***檢測系統 (IDS),網絡探測和分析。網絡分流器的分流模式,是將被監控的UTP鏈路(非屏蔽鏈路)用TAP分流設備一分為二,分流出來的數據接入采集接口,為互聯網信息安全監控系統采集數據。

淺析電阻與TVS管的不同

blank 最大 bsp mage 承擔 com 抗變 tar 低電壓   電阻是一款具有非線性伏安特質的電阻器件,多數用在在電路承擔過壓時進行電壓電路保護,吸取過剩的電流來保護敏感器件。通常稱為VDR。電阻器的電阻體原料是半導體,因此它是半導體電阻器的其中一款。