MyBatis 四大核心主要包括(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。sql
MyBatis 做爲互聯網數據庫映射工具界的「上古神器」,訓有四大「神獸」,謂之:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper。能夠說,瞭解了這四大核心,即可知 MyBatis 八 九。數據庫
SqlSessionFactoryBuilder
從命名上能夠看出,這個是一個 Builder 模式的,用於建立 SqlSessionFactory 的類。SqlSessionFactoryBuilder 根據配置來構造 SqlSessionFactory。安全
其中配置方式有兩種session
1. XML 文件方式
XML 文件方式是做爲經常使用的一種方式:mybatis
String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
mybatis-config.xml 就是咱們的配置文件:app
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
工具
2. Java Config
這是第二種配置方式,經過 Java 代碼來配置:ui
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(BlogMapper.class); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
Java Config 相比較 XML 文件的方式而言,會有一些限 制。好比修改了配置文件須要從新編譯,註解方式沒有 XML 配置項多等。因此,業界大多數狀況下是選擇 XML 文件的方式。但到底選擇哪一種方式,這個要取決與本身團隊的須要。好比,項目的 SQL 語句不復雜,也不須要一些高級的 SQL 特性,那麼 Java Config 則會更加簡潔一點;反之,則能夠選擇 XML 文件的方式。code
SqlSessionFactory
SqlSessionFactory 顧名思義,是用於生產 SqlSession 的工廠。xml
經過以下的方式來獲取 SqlSession 實例:
SqlSession session = sqlSessionFactory.openSession();
SqlSession
SqlSession 包含了執行 SQL 的全部的方法。如下是示例:
SqlSession session = sqlSessionFactory.openSession(); try { Blog blog = session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101); } finally { session.close(); }
固然,下面的方式能夠作到類型安全:
SqlSession session = sqlSessionFactory.openSession(); try { BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); } finally { session.close(); }
Mapper
Mapper 顧名思義,是用作 Java 與 SQL 之間的映射的。包括了 Java 映射爲 SQL 語句,以及 SQL 返回結果映射爲 Java。
好比,下面是一個常見的 Mapper 接口映射文件:
其中 "org.mybatis.example.BlogMapper" 就是咱們要射射的接口,selectBlog 就是BlogMapper上的方法。而這個 selectBlog 具體就是要執行「select * from Blog where id = #{id}」這個 SQL 語句。select * from Blog where id = #{id}
這樣,咱們就能經過
Blog blog = session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101);
或者是
BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101);
來獲取到執行的結果。
固然,若是是採用註解的方式的話,能夠省去 XML 文件:
public interface BlogMapper { @Select("SELECT * FROM blog WHERE id = #{id}") Blog selectBlog(int id); }