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

时间: 2024-08-30 11:29:30

ShardingJDBC不支持批量插入的一种解决办法的相关文章

spring mvc ajax中文乱码的几种解决办法

使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的 ,研究了一下,有几种解决办法. 方法一: 在@RequestMapping里面加入produces = "text/html;charset=UTF-8" Java代码 @RequestMapping(value = "/configrole", method = RequestMethod.GET, produces = &quo

Eclipse 安装 ADT 失败的两种解决办法 [Android Development Tooling]

原因 最近想在新装的 Win7 里搭建一下 Android 的开发环境,虽然现在有 Android Studio 了,不过还是习惯 Eclipse 一点.众所周知的原因,Eclipse 直接安装 ADT(Android Develepment Tooling) 插件是不行的,这里给出两种解决办法,我们的前提是要先安装 Google 的 翻[email protected]!墙工具 GoAgent . 一.使用 Proxy 由于直接访问是不行的,所以你可以使用 VPN 或者 GoAgent 做为

ORA-01950: 表空间&#39;USERS&#39;中无权限的2种解决办法

总的来说这个错误是由于对表空间操作的权限不足造成的,所以这个时候就可以检查出错之前对于所操作的表赋权grant connect,resource to zhangbojie ; ORA-01950: 表空间'USERS'中无权限的2种解决办法

Unity多单位战斗寻路问题的一种解决办法

Unity多单位战斗寻路问题的一种解决办法 Unity提供了NavMesh 导航组件 ? NavMesh是在实践中通用性最好的一种导航方式,但是Unity的实现并没有完全提供一个开放自由的API. 主要的麻烦是: 1.不能脱离Editor生成NavMesh. 2.NavMesh信息保存在场景中,必须随场景加载. ? 他的使用方式主要是在Editor阶段设定障碍关系. NavMeshAgent 作为移动单位来寻路 NavMeshObstacle 作为动态障碍 NavMeshAgent和NavMes

无法打开BCP主数据文件的一种解决办法

今天在导出数据库的时候遇到了这个问题,网上搜索了很多办法都无法解决! 最后发现是目录不存在导致的,但是提示是“无法打开BCP主数据文件” 如果出现这个提示检测下,目录是否存在! 标签: Sql2005 无法打开BCP主数据文件的一种解决办法

JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

原文:JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法. 这2种方式都可以实现不用persistence.xml文件,免去每个Entity都要在persistence.xml文件中配置的烦恼,但是这种方式Entity实体类的主键字段注解@ID要放到 getXXX()方法上,否则不认. 方式1: 修改

64位Ubuntu运行32位程序时报文件不存在(No such file or Directory)的一种解决办法

尝试在64位Ubuntu下面运行32位程序时, 一直说 文件不存在(No such file or directory), 我只想说++. 你tm说个文件格式不正确不就好了? 非得说个文件不存在! 真的不存在? 我要是找出来了, 你给我吃了? jesus, 害我浪费这么多时间. 一种解决办法: 安装32位运行库: sudo apt-get install ia32-libs

IE6不支持:hover伪类效果的解决办法

:hover是在CSS中用来制作效果最常用到的一个伪类,比如:标签或div上的鼠标悬停效果 li:hover,div:hover等. 但这种效果是css2及以上版本才添加的,对于只支持css1的浏览器就显示不出来. 在IE6中只兼容a:hover,要使用li:hover或div:hover,需引用一个文件使其兼容: csshover.htc (点击直接查看) 放在网站的根目录下,并在css文件(或者<style>标签)中,加上 body { behavior:url("...cssh

【MFC中关于插入位图失真的解决办法】

BitBlt函数: 优点:图片不失真 缺点:图片大小和显示区域大小不适应,插入的图片沿用的是图片本身的大小. StretchBlt函数: 优点:"图片和显示区域大小适应. 缺点:图片压缩失真. 如下: 插入到按钮的位图 使用BitBlt函数插入到按钮: 使用StretchBlt函数插入到按钮: 解决办法: 使用StretchBlt函数:在StretchBlt函数前面加上dc.SetStretchBltMode(COLORONCOLOR);