iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >解决sharding JDBC 不支持批量导入问题
  • 447
分享到

解决sharding JDBC 不支持批量导入问题

2024-04-02 19:04:59 447人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录sharding JDBC 不支持批量导入sharding-jdbc不支持多条sql语句批量更新修改思路sharding JDBC 不支持批量导入 package com.y

sharding JDBC 不支持批量导入


package com.ydmes.service.impl.log;
import com.ydmes.domain.entity.log.BarTraceBackLog;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.util.List;
@Component
public class BarTraceBackLogBatchServiceImpl implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void batchInsertBarTraceBackLogs(List<BarTraceBackLog> barTraceBackLogs) {
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
DataSourceTransactionManager transactionManager = (DataSourceTransactionManager)
applicationContext.getBean("shardingTransactitonManager");
TransactionStatus transactionStatus = transactionManager.getTransaction(definition);
for (BarTraceBackLog barTraceBackLog : barTraceBackLogs) {
//UserDao有create方法,单条插入
applicationContext.getBean(BarTraceBackLogServiceImpl.class).insertSelective(barTraceBackLog);
}
transactionManager.commit(transactionStatus);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}

sharding-jdbc不支持多条sql语句批量更新

今天项目有个刷数据的需求,单条数据修改太慢,想着写个批量update,三两下把sql写好了,发现分表不支持,sharding-jdbc只会把我第一个表名填充成正确表名,后面的表名都没有修改。

mybastis如下:


<update id="batchUpdate" >
<foreach collection="userList" item="item" index="index" separator=";">
update t_user_data set `province_id`=#{item.provinceId} where member_id = #{item.memberId}
</foreach>
</update>

sql如下:


update t_user_data_1 set `province_id`=?,`region_id`=? where member_id = ? ;
update t_user_data set `province_id`=?,`region_id`=? where member_id = ? ;

由此可见,这多条sql语句更新是不支持的。

修改思路

既然表名不支持自动多个,那我就自己替换表名,

先在代码中根据表的分表规则得到表名,在赋值在每个sql语句上

代码如下:


userData1.setTableName("t_user_data_" + userData.getMemberId() % 8);

比如我这张表分了八个表,则按8取余这样每个条数据都对应好了表名,

mybastis如下:


<update id="batchUpdate" >
<foreach collection="userList" item="item" index="index" separator=";">
update ${item.tableName} set `province_id`=#{item.provinceId} where member_id = #{item.memberId}
</foreach>
</update>

这里需要注意一下:表名和列名需要用${}来传入,参数才用#{}。

最终sql如下:


update t_user_data_1 set `province_id`=?,`region_id`=? where member_id = ? ;
update t_user_data_2 set `province_id`=?,`region_id`=? where member_id = ? ;

这样便解决了批量更新问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 解决sharding JDBC 不支持批量导入问题

本文链接: https://www.lsjlt.com/news/155904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解决sharding JDBC 不支持批量导入问题
    目录sharding JDBC 不支持批量导入sharding-jdbc不支持多条sql语句批量更新修改思路sharding JDBC 不支持批量导入 package com.y...
    99+
    2024-04-02
  • 如何批处理解决IE不支持JavaScript等问题
    这篇文章主要介绍“如何批处理解决IE不支持JavaScript等问题”,在日常操作中,相信很多人在如何批处理解决IE不支持JavaScript等问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何批处理解决...
    99+
    2023-06-09
  • 如何解决Firefox下不支持outerHTML问题
    这篇文章主要介绍“如何解决Firefox下不支持outerHTML问题”,在日常操作中,相信很多人在如何解决Firefox下不支持outerHTML问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • 怎样解决Firefox下不支持outerHTML问题
    这篇文章给大家分享的是有关怎样解决Firefox下不支持outerHTML问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。var pro = wi...
    99+
    2024-04-02
  • 解决BeanUtils.copyProperties不支持复制集合的问题
    工作中,经常使用Spring的工具类BeanUtils.copyProperties对bean属性进行复制,这里的复制属于浅复制。且不能复制集合和数组。本文会对该工具进行一些测试。 ...
    99+
    2024-04-02
  • 云服务器不支持怎么解决问题
    如果您的云服务器无法连接到外部服务,可以尝试以下方法: 检查网络连接:网络连接是否正常。确保您连接的是稳定的无线网络,确保您正在使用正确的Wi-Fi 连接。 重启服务器:如果您正在使用云服务器,并且尝试重启服务器,可能会发现云服务器出现...
    99+
    2023-10-26
    解决问题 不支持 服务器
  • Excel数据导入Mysql常见问题汇总:如何解决导入数据时遇到的大批量插入问题?
    Excel数据导入Mysql常见问题汇总:如何解决导入数据时遇到的大批量插入问题?导入Excel数据到MySQL是日常开发中经常遇到的任务之一。对于少量数据的导入,可以使用数据库客户端工具或者命令行进行插入操作。但当面对大批量数据导入时,简...
    99+
    2023-10-22
    数据导入 批量插入 Mysql问题解决
  • 如何解决Vue.js v-for不支持IE9的问题
    这篇文章给大家分享的是有关如何解决Vue.js v-for不支持IE9的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近一个小项目,在最后的测试阶段出现了问题,使用了Vue...
    99+
    2024-04-02
  • 云服务器不支持怎么解决问题呢
    如果您的云服务器无法处理请求,您可以尝试以下步骤来解决问题: 确认所使用的云服务提供商是否具有适当的服务条款和条件; 检查所使用的云服务提供商的政策和规定,了解他们是否允许您重新启动服务器; 查看所使用的云服务器是否存在任何未解决的问题...
    99+
    2023-10-27
    解决问题 不支持 服务器
  • mybatis和mybatisplus批量插入问题怎么解决
    这篇文章主要介绍了mybatis和mybatisplus批量插入问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis和mybatisplus批量插入问题怎么解决文章都会有所收获,下面我们一起...
    99+
    2023-07-06
  • ubuntu参考的对象不支持问题如何解决
    如果您在使用Ubuntu时遇到了某个软件或设备的"参考对象不支持"问题,可以尝试以下解决方法:1. 更新软件或设备驱动程序:有时,"...
    99+
    2023-09-20
    ubuntu
  • 如何解决JavaScript find方法不支持IE的问题
    小编给大家分享一下如何解决JavaScript find方法不支持IE的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在...
    99+
    2024-04-02
  • mybatis批量更新插入,解决失败的问题
    update sys_issue first_class = #{item.first}, second_class = #{item.second}, up...
    99+
    2023-09-01
    mybatis mysql java
  • 解决mybatis plus 批量插入方法不能用默认值的问题
    当使用InsertBatchSomeColumn 批量插入时,字段为null时会报错,而单条插入时会使用默认值,两者行为不统一,会对开发过程产生困扰。此方法改良了原版的批量插入方法,使得批量插入和单条插入结果一致。 由于mp的接口变化较快,...
    99+
    2023-09-09
    mybatis java mysql
  • 导入pytorch时libmkl_intel_lp64.so找不到问题解决
    目录引言解决方法:1、搜索该文件路径2、将上一步搜索出来的路径添加到环境变量3、更新环境变量配置文件并显示引言 安装或者更新完pytorch后,运行不了,显示错误: (base) x...
    99+
    2024-04-02
  • 云服务器不支持怎么解决问题呢苹果
    对于大多数应用程序,云服务器都是可以支持的。但是,如果用户的应用程序需要大量的计算资源,或者需要访问大量的存储空间,或者需要在不同的设备上运行,那么云服务器就可能无法提供满足需求的服务。 此外,有些应用程序需要较大的内存和CPU资源,这也...
    99+
    2023-10-27
    解决问题 不支持 苹果
  • 解决springdataJPA对原生sql支持的问题
    springdataJPA对原生sql支持问题 在项目中用到的是springdataJPA连接数据库进行操作,但是JPA中的hql语句不能够满足业务要求,因而需要用到原生sql 但是...
    99+
    2024-04-02
  • 如何解决MySQL批量插入和唯一索引问题
    这篇文章主要介绍了如何解决MySQL批量插入和唯一索引问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL批量插入问题在开发项目时,...
    99+
    2024-04-02
  • Spring Boot如何解决Redis缓存+MySQL批量入库问题
    这篇文章给大家分享的是有关Spring Boot如何解决Redis缓存+MySQL批量入库问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。架构设计架构图:时序图记录基础数据MySQL表结构CREATE...
    99+
    2023-06-29
  • spring data jpa开启批量插入、批量更新的问题解析
    最近准备上spring全家桶写一下个人项目,该学的都学学,其中ORM框架,最早我用的是jdbcTemplate,后来用了Mybatis,唯独没有用过JPA(Hibernate)系的,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作