每一個MyBatis的應用程序都以一個SqlSessionFactory對象的實例為核心。SqlSessionFactory對象的實例可以通過SqlSessionFactoryBuilder對象來獲得。SqlSessionFactoryBuilder對象可以從XML配置文件,
或從Configuration類的習慣准備的實例中構建SqlSessionFactory對象。
1、從XML中構建SqlSessionFactory
從XML文件中構建SqlSessionFactory的實例非常簡單。這里建議你使用類路徑下的資源文件來配置,但是你可以使用任意的Reader實例,這個實例包括由文字形式的文件路徑或URL形式的文件路徑file://來創建。
MyBatis包含了一些工具類,稱作為資源,這些工具類包含一些方法,這些方法使得從類路徑或其他位置加載資源文件更加簡單。
String resource = "org/mybatis/example/Configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMapper = new SqlSessionFactoryBuilder().build(reader);
XML配置文件包含對MyBatis系統的核心設置,包含獲取數據庫連接實例的數據源和決定事務范圍和控制的事務管理器。關於XML配置文件的詳細內容可以在文檔后面找到,這里給出一個簡單的示例:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
當然,在XML配置文件中還有很多可以配置的,上面的示例指出的則是最關鍵的部分。要注意XML頭部的聲明,需要用來驗證XML文檔正確性。environment元素體中包含對事務管理和連接池的環境配置。
mappers元素是包含所有mapper(映射器)的列表,這些mapper的XML文件包含SQL代碼和映射定義信息。
2、不使用XML構建SqlSessionFactory
如果你喜歡從Java程序而不是XML文件中直接創建配置實例,或創建你自己的配置構建器,MyBatis也提供完整的配置類,提供所有從XML文件中加載配置信息的選項。
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類,這些類包含SQL映射語句的注解從而避免了XML文件的依賴,XML映射仍然在大多數高級映射(比如:嵌套Join映射)時需要。出於這樣的原因,如果存在XML配置文件的話,
MyBatis將會自動查找和加載一個對等的XML文件(這種情況下,基於類路徑下的BlogMapper.class類的類名,那么BlogMapper.xml將會被加載)。后面我們會了解更多。