歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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.   
  14. # Console output...  
  15. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
  16. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
  17. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n  
Copyright © Linux教程網 All Rights Reserved