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

mybatis-plus -- mapper中foreach循环操作(新增,或修改)
强烈推介IDEA2021.1.3破解激活,IntelliJ IDEA 注册码,2021.1.3IDEA 激活码  

大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说mybatis-plus -- mapper中foreach循环操作(新增,或修改),希望能够帮助大家进步!!!

.循环添加

接口处:

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

分别是 void 无返回类型 ;有的话是(resultType)返回类型,参数类型(parameterType) list , 

如:

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

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

在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和参数。

循环更新:

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

复制代码

    <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只需要循环要插入的值即可(只需要循环传入的数据即可);

 

自古英雄出炼狱,从来富贵入凡尘。

本文来源huayang183,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/18291

发表评论