问题描述

问题:
之前为解决Spring data jpa 批量插入/删除(saveAll()/deleteAll())速度慢的问题
重写了saveAll()方法,用自定义拼接sql的方法组装sql,但是会出现不兼容特殊符号的问题,于是采用预处理的对占位符进行赋值。


解决方案:

使用 query.setParameter()对占位符进行赋值处理。

@Overridepublic List<OutChannelPlaybill> batchInsertPre(List<OutChannelPlaybill> outChannelPlaybills) {Long beginTime = System.currentTimeMillis(); // 开始时间StringBuilder sb = into();int i = 0;int size;if (outChannelPlaybills.size() < 1000) {size = outChannelPlaybills.size() * 13;} else {size = 1000 * 13;}List<Object> paramList = new ArrayList<>(size);for (OutChannelPlaybill dis : outChannelPlaybills) {i++;if (i > 1) {sb.append(",");}sb.append(" (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ");paramList.add(dis.getOutChannelId());paramList.add(dis.getDuration());paramList.add(dis.getName());paramList.add(dis.getSynchro());paramList.add(dis.getType());paramList.add(dis.getStartTime());paramList.add(dis.getEndTime());paramList.add(dis.getCreatedBy());paramList.add(dis.getCreatedTime());paramList.add(dis.getUpdatedBy());paramList.add(dis.getUpdatedTime());paramList.add(dis.getIsLookback());paramList.add(dis.getIsShield());if (i >= 1000) {Query query = entityManager.createNativeQuery(sb.toString() + ";");int paramIndex = 1;for (Object obj : paramList) {query.setParameter(paramIndex++, obj);}query.executeUpdate();i = 0;paramList.clear();sb = into();}}if (i > 0) {Query query = entityManager.createNativeQuery(sb.toString() + ";");int paramIndex = 1;for (Object obj : paramList) {query.setParameter(paramIndex++, obj);}query.executeUpdate();}Long endTime = System.currentTimeMillis(); // 结束时间log.info("-----------批量插入节目单数量:{}, 执行总耗时: {}ms", outChannelPlaybills.size(), (endTime - beginTime));return outChannelPlaybills;}//sql前半段方法提取private StringBuilder into(){StringBuilder sb = new StringBuilder();sb.append("insert into lp_distribute_success_playbill("+ "layoutId,"+ "outChannelId,"+ "contentId,"+ "asset_id,"+ "type,"+ "playUrl,"+ "name,"+ "displayName,"+ "playType,"+ "startTime,"+ "endTime,"+ "duration,"+ "insertMode,"+ "distributeStatus,"+ "createdBy,"+ "createdTime,"+ "updatedBy,"+ "updatedTime) values");return sb;}

继解决Spring data jpa 批量插入重写saveAll()后遇到符号不兼容问题相关推荐

  1. 解决Spring data jpa 批量插入/删除(saveAll()/deleteAll())速度慢的问题

    问题描述: 项目中使用到了Spring data jpa技术,调用 JpaRepository.saveAll()/deleteAll()方法对list中的数据进行插入/删除时,发现速度特别慢,数据量 ...

  2. 解决spring data jpa saveAll() 保存过慢

    spring data jpa saveAll() 保存过慢 问题发现 今天在生产环境执行保存数据时 影响队列中其他程序的运行 随后加日志排查 发现 执行 4500条 insert操作时 耗时 9分钟 ...

  3. 视频教程-Spring Data JPA项目-Java

    Spring Data JPA项目 2011年毕业后在澳门 遊澳集团(UO Group)旗下某IT科技公司从事 android,php,j2ee开发工作,负责 国际短信发送系统.银联支付业务系统.酒店 ...

  4. 解决Spring Spring Data JPA 错误: Page 1 of 1 containing UNKNOWN instances

    解决Spring Spring Data JPA 错误: Page 1 of 1 containing UNKNOWN instances SpringBoot 整合 Spring-Data-JPA ...

  5. Spring Data Jpa 实体类自动创建数据库表失败解决

    先说一下我遇到的这个问题,首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表. 找了半天发 ...

  6. 快速搭建springmvc+spring data jpa工程

    一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...

  7. ORM框架之Spring Data JPA(一)Hibernate实现JPA规范

    一.ORM简述 ORM(Object-Relational Mapping) 表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能够做到建立对象与数 ...

  8. Spring Data JPA 原理与实战第二天 掌握Repoitory和DQM

    02 Spring Data Common 之 Repoitory 如何全面掌握? 通过上一课时,我们知道了 Spring Data 对整个数据操作做了很好的封装,其中 Spring Data Com ...

  9. SpringBoot22-spingboot数据访问-Spring Data JPA

    一:点睛Spring Data JPA 1,什么事Spring Data JPA 我们知道Hibernate是数据访问解决技术的绝对霸主,使用O/R映射技术实现数据访问,o/r映射即将领域模型类和数据 ...

最新文章

  1. 青源 LIVE 第21期|中国人民大学张静:知识图谱的神经符号推理
  2. clojure的感觉
  3. python面试-Python面试题(整理)
  4. C语言字符串拼接函数:strcat()
  5. MySQL(MariaDB)之参数详解(-)
  6. Request mapping url and handler registration
  7. php替换中文,PHP中文替换
  8. CentOS上使用netstat命令查证DDOS***
  9. AI 智能会议系统(36)---AI 书单
  10. STM32的JTAG下载模式
  11. 23种设计模式(十七)状态变化之状态模式
  12. python计算最大公约数函数_python如何分享解两数的最大公约数 python代码 最大公约和最小公倍数数计算?...
  13. 袖珍计算器c语言设计源码,VB程序题:编一模拟袖珍计算器的完整程序,界面如下图所示。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。 VB源码 龚沛曾...
  14. Linux系统如何安装PDF编辑器,在Ubuntu中编辑PDF文件的5种方法
  15. 对booth算法的一点理解
  16. mysql数据生成词云图,7个好用的在线词云生成工具
  17. 数独大师级技巧_数独高级解法技巧,数独高手教你如何玩转数独
  18. mybatis工作流程
  19. 今日头条怎么刷文章阅读量_今日头条能刷阅读量吗?
  20. HTML+CSS美食静态网页设计——八大菜系介绍舌尖上的美食5页

热门文章

  1. Leetcode 1004
  2. 流媒体协议-- HTTP-FLV
  3. el-date-picker 默认显示上个月
  4. 【b站黑马程序员C++视频学习笔记-多态案例二-制作饮品】
  5. 国外值得关注的十三家大数据与分析公司
  6. JS实现单张图片闪烁效果
  7. 关于滋肾育胎丸的临床应用与研究
  8. 刷脸支付始于支付不止于支付
  9. 1147: 查找子数组
  10. 华为云IoT智慧物流案例10 | 广和通L610模组FOTA升级(服务端FileZilla Server客户端FileZilla)