色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

mybatis insert foreach循環插入方式

瀏覽:7日期:2023-10-18 16:11:33
mybatis insert foreach循環插入

@Insert('<script>' + 'insert into driver_account_appeal_photo (appeal_id,appeal_photo_path) valuesn' + '<foreach collection='photoList' item='item' index='index' separator=','>n' + 't(#{appealId},#{item})n' + '</foreach>' + '</script>')//@Insert('insert into driver_account_appeal_photo (appeal_id,appeal_photo_path) values(#{appealId},#{appealPhotoPath})')void addAppealPhoto(AppealPhoto appealPhoto);foreach語句批量插入數據

本例技術:Spring+SpringMVC+MyBatis+Oracle

問題描述:

需要將程序里的一個集合保存到數據庫里,集合的類型對應數據庫的一個實體,若在程序里遍歷集合再一條條保存到數據庫表中有點麻煩,這里可以利用MyBatis 的 foreach語句實現批量插入數據。

核心代碼清單:

Item(實體類):

public class Item { private String itemCode;//項目代碼 private String itemName;//項目名稱 private String itemValue;//項目值(多個值用逗號隔開) private String itemCategory;//項目所屬類別 public String getItemCode() {return itemCode; } public void setItemCode(String itemCode) {this.itemCode = itemCode; } public String getItemName() {return itemName; } public void setItemName(String itemName) {this.itemName = itemName; } public String getItemValue() {return itemValue; } public void setItemValue(String itemValue) {this.itemValue = itemValue; } public String getItemCategory() {return itemCategory; } public void setItemCategory(String itemCategory) {this.itemCategory = itemCategory; }}Service實現層方法:

public Integer submitItem(List<Item> list ){return researchMapper.submitItem(list); }MyBatis的mapper配置文件的語句

在Oracle數據中,多條數據之間用union all 連接,MySQL數據庫用:

<insert parameterType='java.util.List'>insert into ITEM (ITEM_CODE,ITEM_NAME,ITEM_VALUE,ITEM_CATAGORY)select item.* from(<foreach collection='list' item='item' index='index' separator='UNION ALL' > select #{item.itemCode,jdbcType=VARCHAR}, #{item.itemName,jdbcType=VARCHAR}, #{item.itemValue,jdbcType=VARCHAR}, #{item.itemCategory,jdbcType=VARCHAR} from dual</foreach>) item </insert>

<!--MySql寫法--><insert parameterType='java.util.List'> insert into ITEM ( ITEM_CODE, ITEM_NAME, ITEM_VALUE, ITEM_CATAGORY ) values <foreach collection='list' item='item' index='index' separator=',' > (#{item.itemCode,jdbcType=VARCHAR},#{item.itemName,jdbcType=VARCHAR},#{item.itemValue,jdbcType=VARCHAR},#{item.itemCategory,jdbcType=VARCHAR} ) </foreach></insert>foreach元素解析:

foreach元素是一個遍歷集合的循環語句,它支持遍歷數組,List和Set接口的集合。

foreach元素中,collection是傳進來的參數名稱,可以是一個數組或者List、Set等集合;

item是循環中當前的元素(配置的item的名字隨意取,類似于iterator);

index是當前元素在集合中的位置下標;

seperator是各個元素的間隔符;

()分別是open和close元素,表示用什么符號將這些集合元素包裝起來。

注意:由于一些數據庫的SQL對執行的SQL長度有限制,所以使用foreach元素的時候需要預估collection對象的長度;foreach除了用于本示例的循環插入,亦可用于構建in條件中(可自行嘗試)。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 日韩三级在线观看视频 | 亚洲综合色一区二区三区另类 | 亚洲国产日韩欧美在线 | 91精品全国免费观看 | 国产精品18久久久久久久久久 | 婷婷色综合久久五月亚洲 | 亚洲高清在线观看播放 | 久久香蕉国产线看免费 | 欧美成人影院 在线播放 | 欧美人成片免费看视频不卡 | 国产精品二区三区 | 久久国产热视频 | 在线观看aaa| 日韩欧美视频一区二区在线观看 | 毛片在线全部免费观看 | 看日本真人一一级特黄毛片 | 另类视频在线观看 | free性欧美嫩交 | 一级一片免费播放 | 综合亚洲精品一区二区三区 | 日韩在线一区二区三区 | 欧美大狠狠大臿蕉香蕉大视频 | 国产精品嘿咻嘿咻在线播放 | 亚洲图片视频在线 | 亚洲视频一区在线观看 | 欧美成人自拍 | 久久精品国产精品亚洲 | 国产在线a不卡免费视频 | 日韩色视频一区二区三区亚洲 | 欧美日韩精品一区二区三区视频播放 | 欧美色黄毛片 | 免费一区二区三区视频狠狠 | 99久久精品免费看国产一区二区三区 | 亚洲性影院 | 欧美综合自拍亚洲综合百度 | 欧美三级观看 | 国产精品视频男人的天堂 | 国产精品久久国产三级国电话系列 | 天堂最新版 | 思99re久久这里只有精品首页 | 国产精品1区2区 |