zoukankan      html  css  js  c++  java
  • (七)mybatis批量操作,分页插件

    首先使用方式很简单:

    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 1384454980 to pool.
    
    Process finished with exit code 0

     

    这是不使用BATCH

    EBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    DEBUG [main] - ==>  Preparing: insert into student ( name, loves ) values ( ?, ? ) 
    DEBUG [main] - ==> Parameters: 温鸿飞(String), dsadsa(String)
    DEBUG [main] - <==    Updates: 1
    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 408069119 to pool.
    
    Process finished with exit code 0

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

     

    分页插件: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);

     

  • 相关阅读:
    miniconda安装和使用
    linux下git push出现“更新被拒绝,因为远程仓库包含您本地尚不存在的提交。”问题的处理
    win8、win10系统添加组策略的方法
    Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)
    thinkphp5 连接SQLserver
    thinkphp5 上传图片压缩
    在Vue中使用了Swiper ,从后台获取动态数据后,swiper滑动失效
    微信小程序多图上传及后台处理(后台用thinkphp3.2)
    PHP 数组下标从0开始
    微信小程序去除左上角返回的按钮
  • 原文地址:https://www.cnblogs.com/eenio/p/11364568.html
Copyright © 2011-2022 走看看