這只是MySql的一個邏輯劃分架構。java
SqlSession
類提供對數據庫訪問能力,隱藏了後續複雜的處理邏輯。Mybatis的代碼結構很是工整,堪稱完美的java編程規範教科書,當咱們深刻源碼咱們會發現,Mybatis的註釋量至關少,那是由於基本上咱們能夠經過名稱就能明白其中的含義。git
若是想學習設計模式在代碼中的應用,閱讀Mybatis源碼也是一個不錯的選擇,如:github
public class MybatisTest extends BaseTest { private SqlSessionFactory sqlSessionFactory; @Before public void init() throws IOException { String resource = "config/mybatis-config.xml"; try (InputStream inputStream = Resources.getResourceAsStream(resource)) { // 1.讀取mybatis配置文件創SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } } @Test // 測試自動映射以及下劃線自動轉化駝峯 public void quickStart() throws Exception { // 2.獲取sqlSession try (SqlSession sqlSession = sqlSessionFactory.openSession()) { initH2dbMybatis(sqlSession); // 3.獲取對應mapper PersonMapper mapper = sqlSession.getMapper(PersonMapper.class); // 4.執行查詢語句並返回結果 Person person = mapper.selectByPrimaryKey(1L); System.out.println(person.toString()); } } }
new SqlSessionFactoryBuilder().build(inputStream);
:讀取mybatis配置文件構建SqlSessionFactory
。sqlSessionFactory.openSession();
:獲取sqlSession資源sqlSession.getMapper(PersonMapper.class);
:獲取對應mappermapper.selectByPrimaryKey(1L);
:執行查詢語句並返回結果上圖是Mybatis的執行流程,由此咱們能夠看出Mybatis的核心類有4個,分別是SqlSessionFactoryBuilder
、SqlSessionFactory
、SqlSession
、SQL Mapper
。spring
SqlSessionFactoryBuilde
:讀取配置信息(XML文件),建立SqlSessionFactory,建造者模式,方法級別生命週期;SqlSessionFactory
:建立Sqlsession,工廠單例模式,存在於程序的整個應用程序生命週期;SqlSession
:表明一次數據庫鏈接,能夠直接發送SQL執行,也能夠經過調用Mapper訪問數據庫;線程不安全,要保證線程獨享,方法級生命週期;SQL Mapper
:由一個Java接口和XML文件組成,包含了要執行的SQL語句和結果集映射規則。方法級別生命週期;從上面的執行流程能夠看出,Mybatis核心流程主要分爲如下三個階段:sql
https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases數據庫
spring-boot-student-mybatis工程編程