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
  • 相关阅读:
    简单的嵌套循环
    七、 二进制位运算
    六、字符串格式化--------列表常用操作
    JavaScript取消默认控件并添加新控件(DOM编程艺术第11章)
    JavaScript 字符串拼接 & setInterval()实现简单动画
    伪站创建代码-山东理工
    CSS常用样式
    CSS基础知识
    HTML5其他标签应用
    HTML表单的应用
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/7141795.html
Copyright © 2011-2022 走看看