mybatis-plus -- mapper中foreach循環操作(新增,或修改)


1.循環添加

接口處:

分別是 void 無返回類型 ;有的話是(resultType)返回類型,參數類型(parameterType) list , 

如:

在mapper文件中分別對應ID,參數類型和返回類型。

循環處理,如下:

    <insert id="insertPack" parameterType="java.util.List">
        insert into t_ev_bu_pack
        (
            PACK_CODE,
            BIN,
            PACK_PROD_TIME,
            CREATED_DATE,
            CREATED_BY,
            BATTERY_CLASS,
            SUPPLIER_NAME,
            TERMINAL_USER
        )
        values
        <foreach collection="list" item="item" index="index" open="" close="" separator=",">
        (
            #{item.PACK_CODE},
            #{item.BIN}, 
            #{item.PACK_PROD_TIME},
            now(),
            #{item.CREATED_BY},
            #{item.BATTERY_CLASS},
            #{item.SUPPLIER_NAME},
            #{item.TERMINAL_USER}
        )
        </foreach>
    </insert>

由於沒有返回類型,只有方法ID和參數。

循環更新:

    <update id="updatePack" parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
            update t_ev_bu_pack
            <trim prefix="SET" suffixOverrides=","> 
                <!-- BIN = #{BIN}, -->
                <if test="item.TERMINAL_USER != null and  item.TERMINAL_USER != ''">
                    TERMINAL_USER = #{item.TERMINAL_USER},
                </if> 
                <if test="item.SUPPLIER_NAME != null and  item.SUPPLIER_NAME != ''">
                    SUPPLIER_NAME = #{item.SUPPLIER_NAME},
                </if> 
                <if test="item.PACK_PROD_TIME != null and  item.PACK_PROD_TIME != ''">
                    PACK_PROD_TIME = #{item.PACK_PROD_TIME},
                </if> 
                <if test="item.BATTERY_CLASS != null and  item.BATTERY_CLASS != ''">
                    BATTERY_CLASS = #{item.BATTERY_CLASS},
                </if> 
                LAST_UPDATED_TIME = now(),
                LAST_UPDATED_BY = #{item.LAST_UPDATED_BY}
            </trim>
            where PACK_CODE = #{item.PACK_CODE}
        </foreach>
    </update>

貌似有點區別,insert只需要循環取值就行了,update則更復雜點因為SET 后面又‘,’號分隔,這個update 是循環所有數據,每條數據都有一個ID(即根據主鍵ID修改所以foreach在最外層),而insert只需要循環要插入的值即可(只需要循環傳入的數據即可);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM