天天看點

MyBatis相關API、Resources、SqlSessionFactoryBuilder、SqlSessionFactory及SqlSession

目錄

​​一、Resources​​

​​二、SqlSessionFactoryBuilder​​

​​三、SqlSessionFactory​​

​​四、SqlSession​​

​​五、最佳實踐​​

一、Resources

Resources類由MyBatis提供用于擷取來自核心配置檔案的輸入流

相關方法是: InputStream getResourceAsStream(String filepath) ,注意這是一個靜态方

二、SqlSessionFactoryBuilder

SqlSessionFactoryBuilder類由MyBatis提供用于擷取SqlSessionFactory的執行個體對象

相關方法是: SqlSessionFactory build(InputStream is) ,該方法通過一個輸入流傳回了

SqlSessionFactory對象

三、SqlSessionFactory

SqlSessionFactory類由MyBatis提供用于擷取SqlSession對象,每個基于MyBatis的應用都是以一

個SqlSessionFactory的執行個體為核心的

相關方法: SqlSession openSession() 和 SqlSession openSession(boolean

autoCommit) ,這兩個方法都用于擷取SqlSession對象,如果使用有參數的可以指定是否自動送出事務,沒有指定參數的預設是不自動送出事務

四、SqlSession

SqlSession類由MyBatis提供用于執行SQL、管理事務、接口代理

常用方法:

方法 說明
void commit() 送出事務
void rollback() 復原事務
T getMapper(Class<T> aClass) 擷取指定接口的代理實作類
void close() 釋放資源

除了以上常用方法外,SqlSession還有很多有關資料庫增删改查的方法,但是這些方法繁瑣而且不

符合類型安全,是以使用getMapper()方法來擷取一個Mapper接口的代理實作類來執行映射語句

是個比較友善的做法

五、最佳實踐

SqlSessionFactoryBuilder

方法範圍(也就是局部方法變量)。你可以重用SqlSessionFactoryBuilder 來建立多個 SqlSessionFactory 執行個體,但是最好還是不要讓其一直存在以保證所有的 XML 解析資源開放給更重要的事情

SqlSessionFactory

應用範圍。有很多方法可以做到,最簡單的就是使用單例模式或者靜态單例模式
public class SqlSessionUtil {
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-
                    config.xml");
                    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new
                            SqlSessionFactoryBuilder();
            sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }
}