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只需要循环要插入的值即可(只需要循环传入的数据即可);
自古英雄出炼狱,从来富贵入凡尘。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 记录一次线上服务OOM排查
· Linux实时系统Xenomai宕机问题的深度定位过程
· 记一次 .NET某汗液测试机系统 崩溃分析
· 2025年广告第一单,试试这款永久免费的开源BI工具
· o3 发布了,摔碎了码农的饭碗
· SQL优化的这15招,真香!
· [.NET] API网关选择:YARP还是Ocelot?
· 将 EasySQLite 从 .NET 8 升级到 .NET 9