继解决Spring data jpa 批量插入重写saveAll()后遇到符号不兼容问题
问题描述
问题:
之前为解决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()后遇到符号不兼容问题相关推荐
- 解决Spring data jpa 批量插入/删除(saveAll()/deleteAll())速度慢的问题
问题描述: 项目中使用到了Spring data jpa技术,调用 JpaRepository.saveAll()/deleteAll()方法对list中的数据进行插入/删除时,发现速度特别慢,数据量 ...
- 解决spring data jpa saveAll() 保存过慢
spring data jpa saveAll() 保存过慢 问题发现 今天在生产环境执行保存数据时 影响队列中其他程序的运行 随后加日志排查 发现 执行 4500条 insert操作时 耗时 9分钟 ...
- 视频教程-Spring Data JPA项目-Java
Spring Data JPA项目 2011年毕业后在澳门 遊澳集团(UO Group)旗下某IT科技公司从事 android,php,j2ee开发工作,负责 国际短信发送系统.银联支付业务系统.酒店 ...
- 解决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 ...
- Spring Data Jpa 实体类自动创建数据库表失败解决
先说一下我遇到的这个问题,首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表. 找了半天发 ...
- 快速搭建springmvc+spring data jpa工程
一.前言 这里简单讲述一下如何快速使用springmvc和spring data jpa搭建后台开发工程,并提供了一个简单的demo作为参考. 二.创建maven工程 http://www.cnblo ...
- ORM框架之Spring Data JPA(一)Hibernate实现JPA规范
一.ORM简述 ORM(Object-Relational Mapping) 表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能够做到建立对象与数 ...
- Spring Data JPA 原理与实战第二天 掌握Repoitory和DQM
02 Spring Data Common 之 Repoitory 如何全面掌握? 通过上一课时,我们知道了 Spring Data 对整个数据操作做了很好的封装,其中 Spring Data Com ...
- SpringBoot22-spingboot数据访问-Spring Data JPA
一:点睛Spring Data JPA 1,什么事Spring Data JPA 我们知道Hibernate是数据访问解决技术的绝对霸主,使用O/R映射技术实现数据访问,o/r映射即将领域模型类和数据 ...
最新文章
- 青源 LIVE 第21期|中国人民大学张静:知识图谱的神经符号推理
- clojure的感觉
- python面试-Python面试题(整理)
- C语言字符串拼接函数:strcat()
- MySQL(MariaDB)之参数详解(-)
- Request mapping url and handler registration
- php替换中文,PHP中文替换
- CentOS上使用netstat命令查证DDOS***
- AI 智能会议系统(36)---AI 书单
- STM32的JTAG下载模式
- 23种设计模式(十七)状态变化之状态模式
- python计算最大公约数函数_python如何分享解两数的最大公约数 python代码 最大公约和最小公倍数数计算?...
- 袖珍计算器c语言设计源码,VB程序题:编一模拟袖珍计算器的完整程序,界面如下图所示。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。 VB源码 龚沛曾...
- Linux系统如何安装PDF编辑器,在Ubuntu中编辑PDF文件的5种方法
- 对booth算法的一点理解
- mysql数据生成词云图,7个好用的在线词云生成工具
- 数独大师级技巧_数独高级解法技巧,数独高手教你如何玩转数独
- mybatis工作流程
- 今日头条怎么刷文章阅读量_今日头条能刷阅读量吗?
- HTML+CSS美食静态网页设计——八大菜系介绍舌尖上的美食5页