课时21 :使用MyBatis实现批量操作

.1) 批量操作DML 方式一 推荐方式

  1.如果想提升处理速度可以加上这个代码 测试过实现差不多可以提升1.多倍的性能

 //打开一次会话
        SqlSession session=sessionFactory.openSession(ExecutorType.BATCH);

  2.BATCH:预编译一次,其余次数 只需要设置参数值即可

    <insert id="addStudent"  databaseId="mysql"  useGeneratedKeys="true" keyProperty="stuno">
        insert into student(stuNo,stuName,stuAge)
        values(#{stuno},#{stuName},#{stuAge})
    </insert>

  3.没有BATCCH:

         预编译N次,每次DML都需要执行完整的SQL

.2)不推荐的方式:SQL拼接 (就是说把SQL语句拼接完成一次性插入)

  1.mysql:批量插入

  insert into student(stuno,stuName,stuAge) values (21,'asas',20), (22,'as',21)

  <insert id="addStudent"  databaseId="mysql"  useGeneratedKeys="true" keyProperty="stuno">
       insert  into student(stuno,stuName,stuAge) values
       <foreach collection="list" item="student" separator="," close=";">
           (#{student.stuno},#{student.stuName},#{student.stuAge})
       </foreach>

    </insert>

  2.核心:将SQL拼接成mysql或者其他数据库能够认识的SQL:collection的参数必须是collection或list

  3.这种方式不推荐

    3.1 没有用到mybatis对批量插入的支持 BATCH

    3.2 不适合数据库的迁移

    3.3 3.3 如果大量的数据,则会将 拼接的SQL拉的很长,而部分数据库对SQL语句的长度有限制

原文地址:https://www.cnblogs.com/thisHBZ/p/12511325.html