最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis insert foreach循環(huán)插入方式

 更新時(shí)間:2021年07月13日 10:27:45   作者:學(xué)亮編程手記  
這篇文章主要介紹了mybatis insert foreach循環(huán)插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis insert foreach循環(huán)插入

@Insert("<script>" +
            "insert into driver_account_appeal_photo (appeal_id,appeal_photo_path) values\n" +
            "<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語(yǔ)句批量插入數(shù)據(jù)

本例技術(shù):Spring+SpringMVC+MyBatis+Oracle

問(wèn)題描述:

需要將程序里的一個(gè)集合保存到數(shù)據(jù)庫(kù)里,集合的類型對(duì)應(yīng)數(shù)據(jù)庫(kù)的一個(gè)實(shí)體,若在程序里遍歷集合再一條條保存到數(shù)據(jù)庫(kù)表中有點(diǎn)麻煩,這里可以利用MyBatis 的 foreach語(yǔ)句實(shí)現(xiàn)批量插入數(shù)據(jù)。

核心代碼清單:

Item(實(shí)體類):

public class Item {
    private String itemCode;//項(xiàng)目代碼
    private String itemName;//項(xiàng)目名稱
    private String itemValue;//項(xiàng)目值(多個(gè)值用逗號(hào)隔開)
    private String itemCategory;//項(xiàng)目所屬類別
 
    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實(shí)現(xiàn)層方法:

    public Integer submitItem(List<Item> list ){
        return researchMapper.submitItem(list);
    }

MyBatis的mapper配置文件的語(yǔ)句

在Oracle數(shù)據(jù)中,多條數(shù)據(jù)之間用union all 連接,MySQL數(shù)據(jù)庫(kù)用:

 <insert id="submitItem"  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 id="submitItem"  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元素是一個(gè)遍歷集合的循環(huán)語(yǔ)句,它支持遍歷數(shù)組,List和Set接口的集合。

foreach元素中,collection是傳進(jìn)來(lái)的參數(shù)名稱,可以是一個(gè)數(shù)組或者List、Set等集合;

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

index是當(dāng)前元素在集合中的位置下標(biāo);

seperator是各個(gè)元素的間隔符;

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

注意:由于一些數(shù)據(jù)庫(kù)的SQL對(duì)執(zhí)行的SQL長(zhǎng)度有限制,所以使用foreach元素的時(shí)候需要預(yù)估collection對(duì)象的長(zhǎng)度;foreach除了用于本示例的循環(huán)插入,亦可用于構(gòu)建in條件中(可自行嘗試)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 最新版?IDEA?2022.1?正式上線新功能一覽

    最新版?IDEA?2022.1?正式上線新功能一覽

    4月12日,最新版的IDEA?2022.1正式發(fā)布,無(wú)論是從UI上,還是功能上,都有了很大的改進(jìn),完善,一起來(lái)看一下都有那些重要的更新
    2022-04-04
  • Spring @Primary作用和實(shí)現(xiàn)原理詳解

    Spring @Primary作用和實(shí)現(xiàn)原理詳解

    今天分享一下Spring中的@Primary注解,Primary的意思是主要的,我們?cè)谑褂胹pring的時(shí)候,難免會(huì)定義多個(gè)類型相同的bean,這時(shí)候如果不采取一些方法,那么是無(wú)法正常使用bean的,所以本就給大家介紹Spring @Primary的作用和實(shí)現(xiàn)原理
    2023-07-07
  • Java Swing中的JButton、JComboBox、JList和JColorChooser組件使用案例

    Java Swing中的JButton、JComboBox、JList和JColorChooser組件使用案例

    這篇文章主要介紹了Java Swing中的按鈕(JButton)、組合框(JComboBox)、下拉列表(JList)和顏色選擇器(JColorChooser)組件使用案例,需要的朋友可以參考下
    2014-10-10
  • Java 函數(shù)編程詳細(xì)介紹

    Java 函數(shù)編程詳細(xì)介紹

    這篇文章主要介紹了Java函數(shù)式編程,lambda表達(dá)式可以被認(rèn)為是一個(gè)匿名函數(shù),可以在函數(shù)接口的上下文中使用。函數(shù)接口是只指定一個(gè)抽象方法的接口,下面來(lái)看文章的詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-11-11
  • Mybatis 入門示例代碼之 Association

    Mybatis 入門示例代碼之 Association

    這篇文章主要介紹了Mybatis 入門示例代碼之 Association,需要的的朋友參考下
    2017-02-02
  • Java8 HashMap擴(kuò)容算法實(shí)例解析

    Java8 HashMap擴(kuò)容算法實(shí)例解析

    這篇文章主要介紹了Java8 HashMap擴(kuò)容算法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java 中IO流字符流詳解及實(shí)例

    Java 中IO流字符流詳解及實(shí)例

    這篇文章主要介紹了Java 中IO流字符流詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 為什么不要使用 async void的原因分析

    為什么不要使用 async void的原因分析

    這篇文章主要介紹了為什么不要使用 async void的原因分析及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • springboot實(shí)現(xiàn)用戶名查找用戶功能

    springboot實(shí)現(xiàn)用戶名查找用戶功能

    本文主要介紹了springboot實(shí)現(xiàn)用戶名查找用戶功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • springboot 中文件上傳下載實(shí)例代碼

    springboot 中文件上傳下載實(shí)例代碼

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過(guò)程。這篇文章主要介紹了springboot 中文件上傳下載實(shí)例代碼,需要的朋友可以參考下
    2017-11-11

最新評(píng)論

深水埗区| 兴仁县| 台江县| 华蓥市| 炎陵县| 珠海市| 长宁县| 定州市| 太谷县| 炎陵县| 陵水| 安顺市| 望都县| 老河口市| 清远市| 武冈市| 江阴市| 丰顺县| 察雅县| 射洪县| 鄢陵县| 闽侯县| 沈丘县| 巫溪县| 阿瓦提县| 江北区| 北辰区| 西充县| 新巴尔虎左旗| 扎鲁特旗| 九龙坡区| 安顺市| 张家界市| 临城县| 济南市| 武夷山市| 汝城县| 泉州市| 沙湾县| 平山县| 会泽县|