(七)mybatis批量操作,分頁外掛程式

2021-09-26 06:18:38 字數 4260 閱讀 2025

首先使用方式很簡單:

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,

查詢時加入這句話,

pagehelper.startpage(pagenum,pagesize);   

之後正常查詢,就會返回相應頁數的資訊,當然還有其他很多細節的,看官網就行:

常用這兩種:

1.比如獲取當前頁,總資料量,總頁碼等,

獲取pagehelper.startpage(pagenum,pagesize);   的返回值,page之後通過各種get方法即可獲取,

2.當然也可以獲取第一頁,最後一頁,使用pageinfo

pageinfoxx = new pageinfo<>(list);

(七)mybatis批量操作,分頁外掛程式

首先使用方式很簡單 sqlsession sqlsession sessionfactory.opensession executortype.batch 批量操作核心 改變執行sql的方式,改為batch 那麼原因是什麼呢?首先普通方式是插入一條資料,就搭建乙個sql語句,然後傳入引數,執行sql...

mybatis 批量操作

foreach屬性 屬性描述 item 迴圈體中的具體物件。支援屬性的點路徑訪問,如item.age,item.info.details。具體說明 在list和陣列中是其中的物件,在map中是value。該引數為必選。collection 要做foreach的物件,作為入參時,list 物件預設用l...

mybatis批量操作

查詢id在in裡面的測試 list測試 listselectidin param idlist listidlist 查詢id在in裡面的測試 map測試,就是id在乙個map中 listselectinmap param idmap hashmapidmap 修改所有id在list中的測試 int...