mybatis使用foreach标签进行嵌套插入
作者:卖柴火的小伙子
数据库插入操作常见于多层架构设计中,本文提供了一个具体的实现方案,涉及三层实体类结构,第一层实体类负责基本数据结构的定义,第二层和第三层实体类则提供更详细的业务逻辑处理,同时,文章还介绍了相应的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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。