zoukankan      html  css  js  c++  java
  • mybatis批量插入

    一、在mybatis中ExecutorType的使用

    1、Mybatis内置的ExecutorType有3种,默认的是simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql;而batch模式重复使用已经预处理的语句,

    并且批量执行所有更新语句,显然batch性能将更优;

    2、但batch模式也有自己的问题,比如在Insert操作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下是不符合业务要求的;

    一、代码实现

    1、注入SqlSessionFactory

     @Autowired
        private SqlSessionFactory sqlSessionFactory;

    2、实现

     try(SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);) {
                SysUserMapper mapper = sqlSession.getMapper(SysUserMapper.class);
                long start = System.currentTimeMillis();
                list.stream().forEach(u->mapper.insertTest(u));
                sqlSession.flushStatements();
                sqlSession.commit();
                long end = System.currentTimeMillis();
                System.err.println((end-start)/1000);
            }

    备注:sqlSession.flushStatements()方法的作用就是将前面所有执行过的INSERT、UPDATE、DELETE语句真正刷新到数据库中。底层调用了JDBC的statement.executeBatch方法。

              sqlSession.commit()方法提交事务



  • 相关阅读:
    Zookeeper中Watcher监听实现增删改
    Zookeeper
    pyspider爬豆瓣电影实例
    纵表与横表转换(实用)
    完善爬取糗百的段子
    为自己的爬虫更换代理和HTML头部
    我的第一个爬虫(爬取糗百的段子)
    django创建blog
    python-study-23
    python-study-22
  • 原文地址:https://www.cnblogs.com/cq-yangzhou/p/15683952.html
Copyright © 2011-2022 走看看