mybatis主表与明细表一对多的同时插入操作方法
短信预约 -IT技能 免费直播动态提醒
对主表(采购申请表)和明细表(申请物资表)同时进行插入操作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主表与明细表一对多同时插入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341