给大家整理了相关的编程文章,网友黎星文根据主题投稿了本篇教程内容,涉及到mybatis主表与明细表一对多同时插入、mybatis一对多同时插入、mybatis主表与明细表一对多同时插入相关内容,已被335网友关注,内容中涉及的知识点可以在下方直接下载获取。
mybatis主表与明细表一对多同时插入
对主表(采购申请表)和明细表(申请物资表)同时进行插入操作insert:
<!--对申请主表插入一条记录 --> <insert id="save" parameterType="com.bootdo.purchase.domain.ApplyDo" useGeneratedKeys="true" keyProperty="applyId"> INSERT INTO pur_apply (apply_no,apply_depart_id,apply_person_id,apply_date,apply_estiamount,apply_status) VALUES (#{applyNo}, (SELECT dept_id FROM mat_department WHERE dept_name = #{deptName} ), (SELECT sta_id FROM mat_staff WHERE sta_name = #{staName} ), #{applyDate},#{applyEstiAmount},#{applyStatus}) <selectKey keyProperty="applyId" resultType="Integer" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> </insert>
以上注:useGeneratedKeys="true" keyProperty="applyId" 或 <selectKey keyProperty="applyId" resultType="Integer" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey>,可获取数据表中的自增的apply_id存放在持久类ApplyDo中的属性名applyId,applyId也是明细表对应主表的外键,对应持久类ApplyItemDo中的属性名itemApplyId.
<!--对明细表插入单条记录 --> <insert id="saveDetail" parameterType="com.bootdo.purchase.domain.ApplyItemDo" > INSERT INTO pur_apply_detail (item_apply_id,item_name,item_type,item_number,item_unit,item_estiprice,item_purpose,item_demdate,item_remake) VALUES (#{itemApplyId},#{itemName},#{itemType},#{itemNumber},#{itemUnit},#{itemEstiprice},#{itemPurpose},#{itemDemdate},#{itemRemake}) </insert>
ApplyServiceImpl.java:
@Autowired public ApplyDao applyDao; @Override public int save(ApplyDo applyDo) { //主表插入一条记录 int count = applyDao.save(applyDo); int count2 = 0; int applyId = applyDo.getApplyId(); //明细表插入多条记录 for(ApplyItemDo items : applyDo.getItemDoList() ){ items.setItemApplyId(applyId); count2 = applyDao.saveDetail(items); } return count2; }
到此这篇关于mybatis主表与明细表一对多的同时插入操作方法的文章就介绍到这了,更多相关mybatis主表与明细表一对多同时插入内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!