SpringBoot Mybatis批量插入Oracle数据库数据

 更新时间:2022年08月25日 10:42:03   作者:沈麽鬼​​​​​​​  
这篇文章主要介绍了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 Map<String,Object> postCabinData){
 ​
     // 获取map中的参数
     String shipIdStr = (String) postCabinData.get("shipId");
     Integer shipId = Integer.valueOf(shipIdStr);
     String shipName = (String) postCabinData.get("shipName");
     List<String> ballastCabinData = (List<String>) postCabinData.get("ballastCabinData");
     List<String> freshCabinData = (List<String>) postCabinData.get("freshCabinData");
 ​
     // 获取shipid下的所有的船舱记录
     List<DraftCabin> list = draftCabinService.selectCabinByShipId(shipId);
     // 船舱记录大于0时,执行批量删除;船舱
     if (list.size()>0){
         List<Long> 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<String,Object> 来接收前端cabinData的JSON对象:使用map.get("shipId")方法来解析JSON获得对应的值。
  • 批量删除时,使用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 id="insertDraftCabins" useGeneratedKeys="false">
     INSERT ALL
     <foreach collection="DraftCabin" item="item" index="index">
         INTO draft_cabin
         (cabin_name,ship_id,cabin_type,ship_name)
         values(#{item},#{shipId},#{cabinType},#{shipName,jdbcType=VARCHAR})
     </foreach>
     SELECT 1 FROM DUAL
 </insert>

解析:

  • 批量新增insertDraftCabins,接收多个参数,这时不要添加parameterType属性,useGeneratedKeys="false",一定要添加;
  • foreach的collection是要遍历的对象,这里填写mapper中的注解名称;

orcale的批量插入方法与mysql有很大区别,这里需要注意以下:

 insert all
     into <tableName>[(<table_column1>,<table_column2>...)] 
     values([<column_value1>,<column_value2>...]) 
     [into <tableName>[(<table_column1>,<table_column2>...)] 
     values([<column_value1>,<column_value2>...])]...
 select  <table_value1>[,<table_value2>...] from dual;

到此这篇关于SpringBoot Mybatis批量插入Oracle数据库数据的文章就介绍到这了,更多相关SpringBoot 批量插入Oracle 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对handlerexecutionchain类的深入理解

    对handlerexecutionchain类的深入理解

    下面小编就为大家带来一篇对handlerexecutionchain类的深入理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 解决@ResponseBody作用在返回类型为String的方法时的坑

    解决@ResponseBody作用在返回类型为String的方法时的坑

    这篇文章主要介绍了解决@ResponseBody作用在返回类型为String的方法时的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 全面解析SpringBoot配置文件

    全面解析SpringBoot配置文件

    这篇文章主要为大家全面的解析SpringBoot-配置文件,文中附含详细的图文示例代码,以便同学们能更好的理解,有需要的同学可以借鉴参考下
    2021-09-09
  • Java多线程yield心得分享

    Java多线程yield心得分享

    前几天复习了一下多线程,发现有许多网上讲的都很抽象,所以,自己把网上的一些案例总结了一下
    2013-12-12
  • Java实现斗地主与猜数字游戏详细流程

    Java实现斗地主与猜数字游戏详细流程

    这篇文章主要介绍了怎么用Java来写斗地主种洗牌和发牌的功能,以及猜数字的游戏,斗地主相信大家都知道,同时也知道每一局都要洗牌打乱顺序再发牌,本篇我们就来实现它们能,感兴趣的朋友跟随文章往下看看吧
    2022-04-04
  • SpringDataJpa创建联合索引的实现

    SpringDataJpa创建联合索引的实现

    这篇文章主要介绍了SpringDataJpa创建联合索引的实现,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中join线程操作实例分析

    Java中join线程操作实例分析

    这篇文章主要介绍了Java中join线程操作,结合实例形式分析了java使用join方法操作线程的相关原理与实现技巧,需要的朋友可以参考下
    2019-09-09
  • Java实现简单点餐系统

    Java实现简单点餐系统

    这篇文章主要为大家详细介绍了Java实现简单点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Maven项目配置Tomcat的两种方式

    Maven项目配置Tomcat的两种方式

    本文主要介绍了Maven项目配置Tomcat的两种方式,一种是用idea开发,另一种是eclipse开发,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • Java 如何实现照片转化为回忆中的照片

    Java 如何实现照片转化为回忆中的照片

    本文主要介绍了可以对图片进行色彩处理的Java工具类,让图片变成回忆中的画面,主要将图片做黑白与褐色的处理。代码具有一定价值,感兴趣的童鞋可以关注一下
    2021-11-11

最新评论