mybatis使用foreach标签进行嵌套插入

 更新时间:2024年09月24日 09:26:18   作者:卖柴火的小伙子  
数据库插入操作常见于多层架构设计中,本文提供了一个具体的实现方案,涉及三层实体类结构,第一层实体类负责基本数据结构的定义,第二层和第三层实体类则提供更详细的业务逻辑处理,同时,文章还介绍了相应的mapper接口和配置文件设置

场景说明

现有一插入操作,要求按照指定格式进行插入操作.

具体格式如下:

上面各对象中对应的表字段:

处理过程

第一层实体类:

public class StudioCourseAddUpdateDto implements Serializable {
    private static final long serialVersionUID = 4862281856286977081L;

    private int studioId;

    private List<CourseInfoDto> courseInfoDtoList;

   // 省略get/set
}

第二层实体类:

public class CourseInfoDto implements Serializable {

    private static final long serialVersionUID = -2975706030949793781L;

    private int courseType;

    private List<CourseDetailInfoDto> courseDetailInfoDtoList;

	// 省略get/set
}

第三层实体类:

public class CourseDetailInfoDto implements Serializable {
    private static final long serialVersionUID = -1423166674509217993L;

    private int courseId;

    private String feeCount;

    // 省略get/set
}

mapper接口:

int bathAddStudioCourseInfo(@Param("studioCourseAddUpdateDtoList") List<courseAddUpdateDto> courseAddUpdateDtoList);

配置文件:

<insert id="bathAddStudioCourseInfo" parameterType="com.it.tao.CourseAddUpdateDto">
    <foreach collection="courseAddUpdateDtoList" item="courseAddUpdateDto" >
        <foreach collection="courseAddUpdateDto.courseInfoDtoList" item="courseInfoDto"  >
            <foreach collection="courseInfoDto.courseDetailInfoDtoList" item="courseDetailInfoDto" >
                INSERT INTO card_course (course_id,studio_id,course_type,fee_count) VALUES
                (#{courseDetailInfoDto.courseId},#{courseAddUpdateDto.studioId},#{courseInfoDto.courseType},#{courseDetailInfoDto.feeCount});
            </foreach>
        </foreach>
   </foreach>
</insert>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈 java中ArrayList、Vector、LinkedList的区别联系

    浅谈 java中ArrayList、Vector、LinkedList的区别联系

    ArrayList,Vector底层是由数组实现,LinkedList底层是由双线链表实现,从底层的实现可以得出性能问题ArrayList,Vector插入速度较慢,查询速度较快,而LinkedList插入速度较快,而查询速度较慢。再者由于Vevtor使用了线程安全锁,所以ArrayList的运行效率高于Vector
    2015-11-11
  • Java如何解决发送Post请求报Stream closed问题

    Java如何解决发送Post请求报Stream closed问题

    这篇文章主要介绍了Java如何解决发送Post请求报Stream closed问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 深入Java不可变类型的详解

    深入Java不可变类型的详解

    本篇文章是Java中的不可变类型进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • java poi sax方式处理大数据量excel文件

    java poi sax方式处理大数据量excel文件

    这篇文章主要介绍了java poi sax方式处理大数据量excel文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • SpringBoot项目部署到服务器的两种方式

    SpringBoot项目部署到服务器的两种方式

    目前,前后端分离的架构已成主流,而使用SpringBoot构建Web应用是非常快速的,项目发布到服务器上的时候,只需要打成一个jar包,然后通过命令 : java -jar jar包名称即可启动服务了,本文介绍了SpringBoot项目部署到服务器的两种方式,需要的朋友可以参考下
    2024-10-10
  • java中PreparedStatement和Statement详细讲解

    java中PreparedStatement和Statement详细讲解

    这篇文章主要介绍了java中PreparedStatement和Statement详细讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Struts2学习笔记(3)-DMI动态调用方式

    Struts2学习笔记(3)-DMI动态调用方式

    本文主要介绍Struts2的DMI动态调用的两种方式,简单实用,希望能给大家做一个参考。
    2016-06-06
  • Java 多线程实例讲解(一)

    Java 多线程实例讲解(一)

    本文主要介绍Java 多线程的知识,这里整理了详细的资料及简单示例代码有需要的小伙伴可以参考下
    2016-09-09
  • Java RabbitMQ的TTL和DLX全面精解

    Java RabbitMQ的TTL和DLX全面精解

    过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。DLX, 可以称之为死信交换机,当消息在一个队列中变成死信之后,它能被重新发送到另一个交换机中,这个交换机就是DLX ,绑定DLX的队列就称之为死信队列
    2021-09-09
  • mybatis中如何使用小于号

    mybatis中如何使用小于号

    这篇文章主要介绍了mybatis中如何使用小于号问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论