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;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM