書接上回,我們讀取數(shù)據(jù)源以后,目的是為了獲取一個(gè)連接,在mybatis中就是獲取一個(gè)sqlSession來執(zhí)行數(shù)據(jù)庫。首先定義一個(gè)SqlSessionFactory:

我們直接簡(jiǎn)化定義,創(chuàng)建一個(gè)配置屬性和一個(gè)構(gòu)造方法,我們的使用步驟就可以加上SqlSessionFactory的創(chuàng)建:

然后在這里面寫一個(gè)獲取sqlSession的方法,獲取前,首先初步定義SqlSession類:

然后在SqlSessionFactory中定義獲取sqlSession的方法:

然后我們使用框架時(shí)就可以直接調(diào)用這個(gè)方法了:

sqlSession里面現(xiàn)在只有配置對(duì)象,是否還需要其他東西呢?回想我們前面查看源碼的時(shí)候,mybatis中的sqlSession類中主要的內(nèi)容就是配置對(duì)象和Executor執(zhí)行器,因此這里還需要定義執(zhí)行器,我們不定義接口,直接使用類:

然后把執(zhí)行器加入到sqlSession中:

因此獲取方法也要修改:

這樣獲取一個(gè)sqlSession的方法就創(chuàng)建好了,里面需要的對(duì)象屬性也夠了,但是目前創(chuàng)建的這幾個(gè)類里面只包含配置對(duì)象,其它都是一些空操作,sqlSession里面除了配置對(duì)象和執(zhí)行器意外,主要的行為有哪些呢?共有兩類,一是獲取指定類型的mapper,而是一些基礎(chǔ)的執(zhí)行方法,比如selectOne,selectList等等,這是我們操作數(shù)據(jù)庫的基礎(chǔ)。
這里創(chuàng)建的幾個(gè)方法只是搭起了獲取sqlSession的架子,實(shí)質(zhì)的內(nèi)容下面來實(shí)現(xiàn)。