zoukankan      html  css  js  c++  java
  • MyBatis批量增删改的另外一种思路(推荐)

    零、传统拼接SQL语句的弊端

    传统上利用Mybatis进行批量操作的方式本质来说是拼接SQL语句,然后交给底层执行,如之前博文而言。
    其实这种方式是存在弊端的:
    1. SQL语句可能会过长,DB的引擎可能不支持。
    2. MyBatis拼接耗费资源不说还容易写错。

    一、新思路

    使用JDBC底层的batch进行批量操作
    1. 先添加如下xml,注册一个batchSession
    <!--
            单独配置一个执行JDBC批量操作的session,底层等于sqlSessionFactory.openSession(ExecutorType.BATCH); 
            底层使用org.apache.ibatis.executor.BatchExecutor作为执行引擎
    -->
    <bean id="batchSqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
        <constructor-arg index="1" value="BATCH"/>
    </bean>
    2. 使用注入
    /** 注入批处理SqlSessionTemplate */
        @Autowired
        private SqlSessionTemplate batchSqlSessionTemplate;
    
        //这里的Transactionl一定要加,底层实现是命中SQL和Statement,必须使用的是同一个Connection
        /**
         * 批量 insert
         * @param models
         * @return
         */
        @Transactional
        public int batchcInsert(List<Model> models){
            int result = 0;
            BaseMapper<Model> modelMapper = (BaseMapper<Model>) batchSqlSessionTemplate.getMapper(mapperClass);
            for (Model model:models) {
                result += modelMapper.insert(model);
            }
            return result;
        }
        
        //这里的Transactionl一定要加,底层实现是命中SQL和Statement,必须使用的是同一个Connection
        /**
         * 批量update
         * @param models
         * @return
         */
        @Transactional
        public int batchcUpdate(List<Model> models){
            BaseMapper<Model> modelMapper = (BaseMapper<Model>) batchSqlSessionTemplate.getMapper(mapperClass);
            int result = 0;
            for (Model model:models) {
                result += modelMapper.update(model);
            }
            return result;
        }
        
        // 批量删除delete
  • 相关阅读:
    中文词频统计
    复合数据类型,英文词频统计
    Mybatis 异常:Cause: java.io.IOException: Could not find resource com.xxx.xxx.xml
    Ajax:修改了项目的ajax相关代码,点击运行没有效果
    大数据应用期末总评
    分布式并行计算MapReduce
    分布式文件系统HDFS 练习
    安装关系型数据库MySQL和大数据处理框架Hadoop
    爬虫综合大作业
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/7141795.html
Copyright © 2011-2022 走看看