当前位置: 首页 > news >正文

ShardingJDBC不支持批量插入的一种解决办法

最近项目中需要进行分表就使用了ShardingJDBC做数据库中间层操作
之前sql中有写批量插入,而ShardingJDBC不支持insert xxx values(...),(...),(...)语句
故需要手动开启事务,循环插入并提交事务(与之前批量插入语句性能未做比较)

@Component
public class UserManager implements ApplicationContextAware {

    private static ApplicationContext applicationContext;
    @Autowired
    private UserDao UserDao;

    public void createUseres(List<User> UserList) {
        DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
        definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);

        DataSourceTransactionManager transactionManager = (DataSourceTransactionManager)
                applicationContext.getBean("transactionManager");
        TransactionStatus transactionStatus = transactionManager.getTransaction(definition);

        for (User User : UserList) {
            //UserDao有create方法,单条插入
            applicationContext.getBean(UserDao.class).create(User);
        }

        transactionManager.commit(transactionStatus);
    }

    @Override
    public void setApplicationContext(ApplicationContext ac) throws BeansException {
        applicationContext = ac;
    }
}

转载于:https://www.cnblogs.com/chenvi/p/8340039.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NFS服务的端口分配
  • PHP中new self()和new static()的区别探究
  • rsync工具介绍
  • ubuntu配置虚拟主机
  • 客户端传输数据的方式
  • Django+Nginx+uwsgi搭建自己的博客(三)
  • turtlebot3_waffle 之PC工作环境搭建过程记录
  • Flask 安装 快速入门
  • To the Max
  • mysql--------char 和 varchar 的区别
  • WMI应用(一个系统自带的测试WMI语句的工具)
  • Flask从入门到精通之在视图函数中处理表单
  • js原型链和继承
  • vue实例相关2
  • Django-Ajax
  • python3.6+scrapy+mysql 爬虫实战
  • 2017届校招提前批面试回顾
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • C语言笔记(第一章:C语言编程)
  • Django 博客开发教程 16 - 统计文章阅读量
  • Docker容器管理
  • ECMAScript入门(七)--Module语法
  • Shell编程
  • Vue2.x学习三:事件处理生命周期钩子
  • 面试遇到的一些题
  • 我是如何设计 Upload 上传组件的
  • 正则表达式小结
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • Semaphore
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 交换综合实验一
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #laravel 通过手动安装依赖PHPExcel#
  • $forceUpdate()函数
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (五)c52学习之旅-静态数码管
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (自用)网络编程
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bashrc在哪里,alias妙用
  • .mysql secret在哪_MySQL如何使用索引
  • .Net - 类的介绍
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Core中Emit的使用
  • .net Signalr 使用笔记