MyBatis总结之原理详解

版权声明:@AaronFo https://blog.csdn.net/sinat_33212645/article/details/85084470

目录

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

猜你喜欢

转载自blog.csdn.net/sinat_33212645/article/details/85084470