最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SpringBoot Mybatis批量插入Oracle数据库数据代码示例
时间:2022-08-25 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下SpringBoot Mybatis批量插入Oracle数据库数据代码示例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
前端数据
有如下需求,前端提交一个对象cabinData,保存到数据表中,对象结构如下:
{ "shipId":"424", "shipName":"大唐2号", "ballastCabinData":["艏尖舱","双层底1左","双层底1右","双层底2左","双层底2右","双层底3左","双层底3右","双层底4左","双层底4右","双层底5左","双层底5右","顶边5左","顶边5右","尾尖舱"], "freshCabinData":["淡水舱1左","淡水舱1右"] }
数据表结构
数据表是oracle,表结构为:
后端Controller:
@PostMapping("/savecabin") public AjaxResult savecabin(@RequestBody MappostCabinData){ // 获取map中的参数 String shipIdStr = (String) postCabinData.get("shipId"); Integer shipId = Integer.valueOf(shipIdStr); String shipName = (String) postCabinData.get("shipName"); List ballastCabinData = (List ) postCabinData.get("ballastCabinData"); List freshCabinData = (List ) postCabinData.get("freshCabinData"); // 获取shipid下的所有的船舱记录 List list = draftCabinService.selectCabinByShipId(shipId); // 船舱记录大于0时,执行批量删除;船舱 if (list.size()>0){ List idcards= list.stream().map(DraftCabin::getCabinId).collect(Collectors.toList()); Long[] ids = idcards.toArray(new Long[idcards.size()]); draftCabinService.deleteDraftCabinByIds(ids); } // 批量插入船舱 draftCabinService.insertDraftCabins(ballastCabinData,shipId,"压舱水",shipName); draftCabinService.insertDraftCabins(freshCabinData,shipId,"淡水",shipName); return AjaxResult.success(); }
解析:
使用Map
批量删除时,使用list.stream().map(DraftCabin::getCabinId).collect(Collectors.toList())方法,使用类中的getCabinId方法来将结果集中的cabbinId形成数组参数,入参批量删除方法deleteDraftCabinByIds
批量插入时,调用service的insertDraftCabins方法,传入四个参数(ballastCabinData,shipId,"压舱水",shipName)
mapper
public int insertDraftCabins(@Param("DraftCabin")List DraftCabin, @Param("shipId")Integer shipId, @Param("cabinType")String cabinType,@Param("shipName")String shipName) ;
解析:
mapper中,多个参数使用@Param注解来接收,在mybaits的xml中,调用注解名称。
xml
INSERT ALL INTO draft_cabin (cabin_name,ship_id,cabin_type,ship_name) values(#{item},#{shipId},#{cabinType},#{shipName,jdbcType=VARCHAR}) SELECT 1 FROM DUAL
解析:
批量新增insertDraftCabins,接收多个参数,这时不要添加parameterType属性,useGeneratedKeys="false",一定要添加;
foreach的collection是要遍历的对象,这里填写mapper中的注解名称;
orcale的批量插入方法与mysql有很大区别,这里需要注意以下:
insert all into[( , ...)] values([ , ...]) [into [( , ...)] values([ , ...])]... select [, ...] from dual;
-
上一个: js实现注册页面校验功能代码示例
相关文章
- SpringBoot自定义bean绑定解析 10-24
- Javaweb工程运行报错HTTP Status 404解决教程 10-20
- JAVA获取jvm和操作系统相关信息方法 10-20
- BeanFactory和FactoryBean的区别讲解 10-20
- 微信小程序的宿主环境实现教程 10-10
- dispatchEvent解决重叠元素响应事件教程 10-10