SqlSession 是Mybatis的核心接口之一,也是Mybatis 接口層的主要組成部分,對外提供經常使用的API。類圖以下java
在SqlSession中定義了經常使用數據庫的操做以及事物的相關操做,爲了方便用戶使用,每種操做類型操做都提供了多種重載。sql
package org.apache.ibatis.session; import java.io.Closeable; import java.sql.Connection; import java.util.List; import java.util.Map; import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.executor.BatchResult; public interface SqlSession extends Closeable { // 定位到具體的SQL,返回值爲查詢結果對象 <T> T selectOne(String statement); // 定位到具體的SQL,傳入參數 <T> T selectOne(String statement, Object parameter); // 查詢結果會有多條返回記錄 <E> List<E> selectList(String statement); // 同上 <E> List<E> selectList(String statement, Object parameter); // 返回結果爲Map <K, V> Map<K, V> selectMap(String statement, String mapKey); // <K, V> Map<K, V> selectMap(String statement, Object parameter, String mapKey); <K, V> Map<K, V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowBounds); // 返回遊標對象 <T> Cursor<T> selectCursor(String statement); <T> Cursor<T> selectCursor(String statement, Object parameter); <T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds); // 查詢結果有此處指定的ResultHandler 對象處理 void select(String statement, Object parameter, ResultHandler handler); void select(String statement, ResultHandler handler); void select(String statement, Object parameter, RowBounds rowBounds, ResultHandler handler); // 執行插入語句 int insert(String statement); int insert(String statement, Object parameter); int update(String statement); int update(String statement, Object parameter); int delete(String statement); int delete(String statement, Object parameter); // 提交事務 void commit(); void commit(boolean force); // 回滾事務 void rollback(); void rollback(boolean force); // 刷新到數據庫 List<BatchResult> flushStatements(); // 關閉當前session @Override void close(); // 清空緩存 void clearCache(); // 獲取Configuration 對象 Configuration getConfiguration(); // 獲取 type 對應的mapper 對象 <T> T getMapper(Class<T> type); // 獲取對應的數據庫鏈接 Connection getConnection(); }