mybatis-plus  mapper中foreach循环操作代码详解(新增或修改)

 更新时间:2020年11月17日 11:03:02   作者:huayang183  
这篇文章主要介绍了mybatis-plus mapper中foreach循环操作代码详解(新增或修改),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

.循环添加

接口处:

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

到此这篇关于mybatis-plus mapper中foreach循环操作代码详解(新增或修改)的文章就介绍到这了,更多相关mybatis-plus foreach循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring mvc+localResizeIMG实现HTML5端图片压缩上传

    spring mvc+localResizeIMG实现HTML5端图片压缩上传

    这篇文章主要为大家详细介绍了使用spring mvc+localResizeIMG实现HTML5端图片压缩上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java常见延迟队列的实现方案总结

    Java常见延迟队列的实现方案总结

    Java延迟队列(DelayQueue)是Java并发包中的一个类,它实现了BlockingQueue接口,且其中的元素必须实现Delayed接口,延迟队列中的元素按照延迟时间的长短进行排序,本文给大家介绍了Java常见延迟队列的实现方案总结,需要的朋友可以参考下
    2024-03-03
  • Java由浅入深分析多态的概念

    Java由浅入深分析多态的概念

    多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定
    2022-04-04
  • SpringBoot使用自定义注解+AOP+Redis实现接口限流的实例代码

    SpringBoot使用自定义注解+AOP+Redis实现接口限流的实例代码

    这篇文章主要介绍了SpringBoot使用自定义注解+AOP+Redis实现接口限流,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • SpringBoot实现异步任务的项目实践

    SpringBoot实现异步任务的项目实践

    本文将使用SpringBoot 去实现异步之间的调用,提高系统的并发性能、用户体验,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Java使用建造者模式实现办理手机套餐功能详解

    Java使用建造者模式实现办理手机套餐功能详解

    这篇文章主要介绍了Java使用建造者模式实现办理手机套餐功能,较为详细的描述了建造者模式的概念、原理并结合实例形式分析了Java使用建造者模式实现的办理手机套餐功能具体步骤与相关操作注意事项,需要的朋友可以参考下
    2018-05-05
  • Java随机密码生成并和邮箱、手机号匹配

    Java随机密码生成并和邮箱、手机号匹配

    这篇文章主要介绍了Java随机密码生成并和邮箱、手机号匹配的相关资料,需要的朋友可以参考下
    2016-01-01
  • SpringBoot+MyBatis-Plus实现分页功能

    SpringBoot+MyBatis-Plus实现分页功能

    在SpringBoot项目中,结合MyBatis-Plus(简称MP)可以非常方便地实现分页功能,MP为开发者提供了分页插件PaginationInterceptor,只需简单配置即可使用,本文给大家介绍了SpringBoot+MyBatis-Plus实现分页功能,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 详解java中jvm虚拟机栈的作用

    详解java中jvm虚拟机栈的作用

    这篇文章主要介绍了jvm虚拟机栈的作用,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 浅析在Java中如何优雅的停止一个线程

    浅析在Java中如何优雅的停止一个线程

    我们知道在Java中可以通过new Thread().start()创建一个线程,那今天我们就来思考另外一个问题:线程的终止,快跟随小编一起学习起来吧
    2024-03-03

最新评论