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。