首页 > 数据库技术 > 详细

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

时间:2018-01-24 10:34:20      阅读:972      评论:0      收藏:0      [点我收藏+]

最近项目中需要进行分表就使用了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;
    }
}

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

原文:https://www.cnblogs.com/chenvi/p/8340039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!