1   Mybatis简介

        一个基于Java的持久层框架,优势在于灵活,几乎可以代替JDBC,同时提供了接口编程。目前Mybatis的数据访问层DAO是不需要实现类的,只需要一个接口和XML(或者注解)。Mybatis提供自动映射、动态SQL、级联、缓存、注解、代码和SQL分离等特性,使用方便,同时也可以对SQL进行优化。

2   优势

        封装少、映射多样化、支持存储过程、可以进行SQL优化等。

3   核心组件

  ·SqlSessionFactoryBuilder(构造器):根据配置或者代码来生成SqlSessionFactory,采用分步构建的Builder模式;

  ·SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用工产模式;

  ·SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。

  ·SQL Mapper(映射器):由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。

3.1  SqlSessionFactoryBuilder(构造器)

   使用Mybatis首先是使用配置或者代码去生成SqlSessionFactory,而Mybatis提供了构造器SqlSessionFactoryBuilder。它提供了一个类org.apache.ibatis.session.Configuration作为引导,采用的是Builder模式。具体的分步则是在Configuration类里面完成的,不需要另外编写。

3.2  SqlSessionFactory(工厂接口)

  在Mybatis中既可以通过配置的XML文件的形式生成SqlSessionFactory,也可以通过Java代码的形式去生成。为简便开发,建议使用XML的形式。当配置了XML或者提供代码之后,Mybatis会读取配置文件,通过Configuration类对象构建整个Mybatis的上下文。

  每个基于Mybatis的应用都是以一个SqlSessionFactory的实例为中心的,而SqlSessionFactory唯一的作用就是生成Mybatis的核心接口对象SqlSession。下面只讨论使用配置文件生成SqlSessionFactory的方法。

3.2.1  使用XML构建SqlSessionFactory

  在Mybatis中XML分为两类:一类是基础配置文件,通常只有一个,主要是配置一些最基本的上下文参数和运行环境;另一类是映射文件,它可以配置映射关系、SQL、参数等信息。

  先看简易的配置文件(mybatis-config.xml):

 

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <! DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
 3 <configuration>
 4     <typeAliases><!-- 别名 -->
 5         <typeAlias  alias="role" type="com.learn.mybatis.pojo.Role"/>
 6     </typeAliases>
 7     <!-- 数据库环境 -->
 8     <environments default="development">
 9         <environment id="development">
10             <transactionManager type="JDBC"/>
11             <dataSource type="POOLED">
12                 <property name="driver" value="com.mysql.jdbc.Driver"/>
13                 <property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
14                 <property name="username" value="root"/>
15                 <property name="password" value="root"/>
16             </dataSource>
17         </environment>
18     </environments>
19     <!-- 映射文件 -->
20     <mappers>
21         <mapper resource="com/learn/mybatis/mapper/RoleMapper.xml"/>
22     </mappers>
23 </configuration>

 

  有了基础配置文件,就可以通过一段很简短的代码来生成SqlSessionFactory了,代码如下:

1 SqlSessionFactory sqlSessionFactory = null;
2 String resource = "mybatis-config.xml";
3 InputStream inputStream;
4 try {
5      inputStream = Resource.getResourceAsStream(resource);
6      sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream)  ;
7 } catch(IOException e) {
8      e.printStackTrace();
9 }

  首先读取Mybatis-config.xml,然后通过SqlSessionFactoryBuilder的Build方法去创建SqlSessionFactory。