首先使用方式很简单:

SqlSession sqlSession = sessionFactory.openSession(ExecutorType.BATCH);

批量操作核心:改变执行sql的方式,改为BATCH

那么原因是什么呢?

首先普通方式是插入一条数据,就搭建一个sql语句,然后传入参数,执行sql,但是BATCH方式,预编译一次,我们将sql语句的框架先搭建好,之后每次执行的时候,只需要给里面填,并不需要再次搭建sql语句。

通过控制台日志输出也可以看的出来:

这是BATCH方式的批量插入的:

EBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - Committing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@52851b44]
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@52851b44]
DEBUG [main] - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@52851b44]
DEBUG [main] - Returned connection to pool. Process finished with exit code

这是不使用BATCH

EBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - ==> Preparing: insert into student ( name, loves ) values ( ?, ? )
DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
DEBUG [main] - <== Updates:
DEBUG [main] - Committing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1852a3ff]
DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1852a3ff]
DEBUG [main] - Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1852a3ff]
DEBUG [main] - Returned connection to pool. Process finished with exit code

可以看到预编译了很多次。

分页插件:PageHelper,

很简单,下载jar包或者在maven之中直接导入,

查询时加入这句话,

PageHelper.startPage(pageNum,pageSize);

之后正常查询,就会返回相应页数的信息,当然还有其他很多细节的,看官网就行:https://pagehelper.github.io/docs/howtouse/

常用这两种:

1.比如获取当前页,总数据量,总页码等,

获取PageHelper.startPage(pageNum,pageSize);   的返回值,Page<Object> 之后通过各种get方法即可获取,

2.当然也可以获取第一页,最后一页,使用pageinfo

PageInfo<classname> xx = new PageInfo<>(list);

(七)mybatis批量操作,分页插件的更多相关文章

  1. Mybatis的分页插件PageHelper

    Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper  文档地址:http://git.oschina. ...

  2. Mybatis 的分页插件PageHelper-4.1.1的使用

    Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper  文档地址:http://git.oschin ...

  3. SpringBoot集成MyBatis的分页插件 PageHelper

    首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...

  4. Mybatis之分页插件pagehelper的简单使用

    最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...

  5. spring boot(二)整合mybatis plus+ 分页插件 + 代码生成

    先创建spring boot项目,不知道怎么创建项目的 可以看我上一篇文章 用到的环境 JDK8 .maven.lombok.mysql 5.7 swagger 是为了方便接口测试 一.Spring ...

  6. 理解 Mybatis的分页插件 PageHelper

    Mybatis + SpringMVC + Maven实现分页查询 (推荐采用的插件是PageHelper) 先看一下之前的这篇博客,这里推荐了 Mybatis 的分页方法. 按照上面的方法设置后,确 ...

  7. 利用mybatis的分页插件实现商品列表的显示

    分析思路: 当我们点击查询商品的时候,会出现商品的列表,并按上下页可以实现分页的查询的功能. 首先首先我们先找到商品查询商品的按钮在jsp的那个页面,即首页index.jsp 这里有个url即显示商品 ...

  8. mybatis的分页插件使用方法

    1.下载所需要的jar包,如果使用maven可以在maven中添加依赖: 插件的实现原理: 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的j ...

  9. mybatis pagehelper分页插件使用

    使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化.缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.查询分页数据,2.获取分 ...

  10. Mybatis的分页插件PageHelper分页失效的原因

    引用博客:个人博客地址:https://alexaccele.github.io/ PageHelper是Mybatis的一个很好的分页插件,但要使用它的分页功能需要注意一下几点 1.导入相关包,例如 ...

随机推荐

  1. windows生成github密钥并推送文件踩坑

    强调官方文档最可靠,百度踩坑很浪费时间,建议去寻找一手数据源头 github官方文档提供了帮助 第一步 查看密钥 如果您还没有 SSH 密钥,则必须生成新 SSH 密钥. 如果您不确定是否已有 SSH ...

  2. 你不得不了解Helm 3中的5个关键新特性

    Helm是Kubernetes的一个软件包管理器.两个月前,它发布了第三个主要版本,Helm 3.在这一新版本中,有许多重大变化.本文将介绍我认为最关键的5个方面. 1. 移除了Tiller Helm ...

  3. 序言vue.js介绍

    vue.js :渐进式JavaScript框架 vue.js 优点 1.体积小 例如:压缩后 33k; 2.更高的运行效率 基于虚拟dom,一种可以预先通过JavaScript进行各种计算,把最终的D ...

  4. C++Primer第五版 6.1节练习

    练习6.1:实参和形参的区别是什么? 通俗解释: 实参是形参的初始值.编译器能以任意可行的顺序对实参求值.实参的类型必须与对应的形参类型匹配. 详解1) 形参变量只有在函数被调用时才会分配内存,调用结 ...

  5. 重拾c++第二天(4):复合类型

    1.定义:种类 数组名[元素个数] = {元素1,...,元素n} ,或者直接赋值:数组名[元素位置] = 值; 2.部分初始化,其他全为0,可以就定义一个0,这样得到0数组(或者就一个{},别的啥也 ...

  6. 最大区间和变形 - codeforces

    题意 : 可以选择操作一串区间,将区间内的某一个数全部变成一个新的数字,询问整个区间中某个数字的出现次数总共有多少个? 思路分析 : 首先最后选的一定是一个区间,然后 ans = cnt(1, l-1 ...

  7. CheckStyle报错的常见问题及解决方式

    CheckStyle报错的常见问题及解决方式 声明: 本文摘自百度文库.希望这篇文章提到的规范能对大家编程起到好的效果,此文不定期更新,将推出更加详尽的编程规范. 1   提示:Type is mis ...

  8. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第一节:整体思路

    在构建本章节内容的时候,笔者也在想一个问题,究竟什么样的采集器框架,才能算得上是一个“全能”的呢?就我自己以往项目经历而言,可以归纳以下几个大的分类: 根据通讯协议:HTTP的.HTTPS的.TCP的 ...

  9. 【java面试】线程篇

    1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位. 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任 ...

  10. windows命令行(终端)怎么复制粘贴

    原文地址:https://jingyan.baidu.com/article/335530daf96f3a19cb41c3f4.html 终端打开后,我们可以简单的ping一下,查看一下连接地址   ...