mybatis三個執行器的差異

myBatis官方對參數"defaultExecutorType"是這樣說明的:
有這樣三種執行器, SIMPLE是普通的執行器;REUSE執行器會重用預處理語句(prepared statements);BATCH執行器將重用語句並執行批量更新。
那麼應該可理解爲:
設爲"SIMPLE", 在執行bookDao.save(book)時,就至關於JDBC的stmt.execute(sql);
設爲"REUSE", 在執行bookDao.save(book)時,至關於JDBC重用一條sql,再經過stmt傳入多項參數值,而後執行stmt.executeUpdate()或stmt.executeBatch();
設爲"BATCH", 在執行bookDao.save(book)時,至關於JDBC語句的 stmt.addBatch(sql),即僅僅是將執行SQL加入到批量計劃。 因此此時不會拋出主鍵衝突等運行時異常,而只有臨近commit前執行stmt.execteBatch()後纔會拋出異常。sql

 

除此以外,還有一個CacheExecutor,它有一個重要屬性delegate,保存的是某類普通的Executor,值在構照時傳入。執行數據庫update操做時,它直接調用delegate的update方法,執行query方法時先嚐試從cache中取值(其實現是org.apache.ibatis.cache.decorators.TransactionalCache,二級緩存),取不到再調用delegate的查詢方法,並將查詢結果存入cache中。數據庫

相關文章
相關標籤/搜索