歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> MyBatis的關於批量數據操作的測試

MyBatis的關於批量數據操作的測試

日期:2017/3/1 10:22:30   编辑:Linux編程

MyBatis的前身就是著名的Ibatis,不知何故脫離了Apache改名為MyBatis。
MyBatis所說是輕量級的ORM框架,在網上看過一個測試報告,感覺相比於Hibernate來說,優勢並不明顯。

下面說一下比較有趣的現象,根據MyBatis的官方文檔,在獲得sqlSession時,它有為批量更新而專門准備的:

  1. session = sessionFactory.openSession();//用於普通update
  2. session = sessionFactory.openSession(ExecutorType.BATCH, true);//用於批量update
一般來說,對MYSQL數據庫批量操作時速度取決於,是為每一個處理分別建立一個連接,還是為這一批處理一共建立一個連接。按MyBatis的手冊說明,選擇ExecutorType.BATCH意味著,獲得的sqlSession會批量執行所有更新語句。不過我測試了一下,批量插入1000條數據,發覺ExecutorType.BATCH方式的效率居然比普通的方式差很多。我測試用的Mapper中的insert配置如下,再用for循環插入1000條記錄:
  1. <insert id="insert" parameterType="sdc.mybatis.test.Student">
  2. <!-- WARNING - @mbggenerated This element is automatically generated by
  3. MyBatis Generator, do not modify. This element was generated on Mon May 09
  4. 11:09:37 CST 2011. -->
  5. insert into student (id, name, sex,
  6. address, telephone, t_id
  7. )
  8. values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR},
  9. #{sex,jdbcType=VARCHAR},
  10. #{address,jdbcType=VARCHAR}, #{telephone,jdbcType=VARCHAR}, #{tId,jdbcType=INTEGER}
  11. )
  12. </insert>

1、 我不清楚原因在哪裡, 就配置了MyBatis的log4j,想查看下日志。下載了log4j.jar和commons-logging.jar並配置到項目的類路徑,然後在代碼路徑下新建文件log4j.properties,內容如下:

  1. log4j.rootLogger=DEBUG, stdout
  2. # SqlMap logging configuration...
  3. log4j.logger.com.ibatis=DEBUG
  4. log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
  5. log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
  6. log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG
  7. log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
  8. log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
  9. log4j.logger.java.sql.Connection=DEBUG
  10. log4j.logger.java.sql.Statement=DEBUG
  11. log4j.logger.java.sql.PreparedStatement=DEBUG
  12. log4j.logger.java.sql.ResultSet=DEBUG
  13. # Console output...
  14. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  15. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  16. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
Copyright © Linux教程網 All Rights Reserved