天天看點

MyBatis總結之原理詳解1.MyBatis 安裝2.MyBatis中常見對象及其工作基本過程3.作用域(Scope)和生命周期

目錄

1.MyBatis 安裝

2.MyBatis中常見對象及其工作基本過程

2.1 SqlSessionFactory

2.2 SqlSession

2.3 Mapper XML映射檔案

3.作用域(Scope)和生命周期

1.MyBatis 安裝

1.1 下載下傳 mybatis-x.x.x.jar 檔案并置于 classpath 中即可。

1.2 若是maven項目,在pom.xml檔案中引入dependency代碼即可。

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>
           

2.MyBatis中常見對象及其工作基本過程

2.1 SqlSessionFactory

   2.1.1 SqlSessionFactory:每個基于 MyBatis 的應用都是以一個 SqlSessionFactory 的執行個體為中心的。SqlSessionFactory是單個資料庫映射關系經過編譯後的記憶體鏡像,SqlSessionFactory 的執行個體可以通過 SqlSessionFactoryBuilder 獲得。而SqlSessionFactoryBuilder 則可以從 XML 配置檔案或一個預先定制的 Configuration 的執行個體建構出 SqlSessionFactory 的執行個體。

   2.1.2 從xml中建構SqlSessionFactory:

//讀取mybatis-config.xml配置檔案
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

//初始化mybatis,建立SqlSessionFactory執行個體

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilerr().build(inputStream);
           

   2.1.3 XML 配置檔案:mybatis-config.xml,它是MyBatis的核心配置,包含了擷取資料庫連接配接執行個體的資料源(DataSource)和決定事務作用域和控制方式的事務管理器(TransactionManager),如下為其簡單示例:

<?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/demo/SysUserMapper.xml"/>
  </mappers>
</configuration>
           

2.2 SqlSession

    2.2.1 SqlSession:MyBatis執行持久化操作的對象,SqlSessionFactory是SqlSession的工廠,是以SqlSession由SqlSessionFactory建立,SqlSession 完全包含了面向資料庫執行 SQL 指令所需的所有方法。你可以通過 SqlSession 執行個體來直接執行已映射的 SQL 語句。

SqlSession session = sqlSessionFactory.openSession();
try {
  SysUser sysUser= (SysUser) session.selectOne("org.mybatis.demo.SysUserMapper.selectSysUser", "Aaron");
} finally {
  session.close();
}
           

2.3 Mapper XML映射檔案

    2.3.1 由上述可知,SqlSessionFactory建立了SqlSession對象,由SqlSession執行個體來直接執行已映射的 SQL 語句,MyBatis會根據mybatis-config.xml中的mapper映射器找到XML映射檔案。簡單的映射檔案示例如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.demo.SysUserMapper">
  <select id="selecSysUser" resultType="SysUser">
    select * from sys_user where name = #{name}
  </select>
</mapper>
           

3.作用域(Scope)和生命周期

                                     類名稱                                            SCOPE
                      SqlSessionFactoryBuilder                                            method
                          SqlSessionFactory                                            application
                               SqlSession                                            request/method
                                  Mapper                                             method

繼續閱讀