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

    自古英雄出炼狱,从来富贵入凡尘。
  • 相关阅读:
    了解HTTP Header之User-Agent和HTTP协议的响应码
    怎样才算一个优秀的管理者
    ldpi、mdpi、hdpi、xhdpi、xxhdpi (无内容,待填)
    手把手教做小偷采集
    java中碰到无法解决的问题:无法访问类的getter访问器
    简单的加密解密处理
    Java中处理二进制移位
    Java中实现String.padLeft和String.padRight
    这短短几行代码价值一万
    从一篇文章中检查特定单词出现数量和第一次出现位置
  • 原文地址:https://www.cnblogs.com/yunliu0603/p/11213211.html
Copyright © 2020-2023  润新知