1. 程式人生 > >深入Mybatis原始碼——執行流程

深入Mybatis原始碼——執行流程

# 前言 上一篇分析Mybatis是如何載入解析XML檔案的,本篇緊接上文,分析Mybatis的剩餘兩個階段:**代理封裝**和**SQL執行**。 # 正文 ## 代理封裝 Mybatis有兩種方式呼叫Mapper介面: ```java private static SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader); // 第一種 try (SqlSession session = sqlMapper.openSession(TransactionIsolationLevel.SERIALIZABLE)) { Blog blog = session.selectOne("org.apache.ibatis.domain.blog.mappers.BlogMapper.selectBlogWithPostsUsingSubSelect", 1); } // 第二種 try (SqlSession session = sqlMapper.openSession()) { AuthorMapper mapper = session.getMapper(AuthorMapper.class); Author author = mapper.selectAuthor(101); } ``` 從上面程式碼可以看到無論是哪一種首先都要建立**SqlSessionFactory**物件,然後通過這個物件拿到**SqlSession**物件。在早期版本中只能通過該物件的增刪改呼叫Mapper介面,很明顯這種方式可讀性很差,難以維護,寫起來也複雜,所以後面谷歌開始維護Mybatis後,重新封裝提供了第二種方式直接呼叫Mapper介面。不過本質上第二種是在第一種的基礎之上實現的,所以下面就以第二種為主進行分析,進入到**getMapper**方法: ```java