First use is very simple:
SqlSession sqlSession = sessionFactory.openSession(ExecutorType.BATCH);
Bulk Operations Core: change the way of implementation of sql instead BATCH
So what is it?
First, the normal way is to insert a piece of data, you build a sql statement and pass parameters, perform sql, but BATCH mode, pre-compiled once, we will frame sql statement to build a good, time after each execution, just give filled it, you do not need to build a sql statement again.
The console log output can also look out:
This is the way of insertion of the BATCH 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
This is not to use 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
We can see precompiled many times.