课时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:
.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语句的长度有限制