什么是MyBatis ?
MyBatis 是一个的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,实体类和SQL语句之间建立映射关系。
MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目。
MyBatis 的特点
- 基于SQL语法,简单易学;
- 能了解底层封装过程;
- SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度;
- 方便程序代码调试;
MyBatis 的优缺
优点
- 与JDBC相比,减少了50%以上的代码量;
- 最简单的持久化框架,小巧并简单易学;
- SQL代码从程序代码中彻底分离,可重用;
- 提供XML标签,支持编写动态SQL;
- 提供映射标签,支持对象与数据库的ORM字段映射;
缺点
- SQL语句编写工作量大,对开发人员有一定要求;
- 数据库移植性差;
Mybatis框架的原理介绍
使用MyBatis的开发步骤
-
下载mybatis-3.2.2.jar包并导入工程;
-
编写MyBatis核心配置文件(sqlMapConfig.xml);
-
创建实体类-POJO;
-
DAO层-SQL映射文件(mapper.xml;
读取核心配置文件mybatis-config.xml;
创建SqlSessionFactory对象,读取配置文件;
创建SqlSession对象;
调用mapper文件进行数据操作;
MyBatis的核心对象
- SqlSessionFactoryBuilder
用过即丢,其生命周期只存在于方法体内;
可重用其来创建多个 SqlSessionFactory 实例;
负责构建SqlSessionFactory,并提供多个build方法的重载; - SqlSessionFactory
SqlSessionFactory是每个MyBatis应用的核心;
作用:创建SqlSession实例;
作用域:Application;
生命周期与应用的生命周期相同; - SqlSession
包含了执行SQL所需的所有方法;
对应一次数据库会话,会话结束必须关闭;
线程级别,不能共享;
在SqlSession里可以执行多次SQL语句,但一旦关闭了SqlSession就需要重新创建;
SqlSession的两种使用方式:
通过SqlSession实例直接运行映射的SQL语句;
基于Mapper接口方式操作数据;
Mybatis配置文件
SqlMapConfig.xml是Mybatis的全局配置文件,它的名称可以是任意,但是一般命名都为(SqlMapConfig)。
mappers标签
该标签的作用是加载映射文件。
方式一:<mapper resource=""/>
该方式是加载相对于类路径下的映射文件;
方式二:<mapper url=""/>
该方式使用全限定路径;
方式三:<mapper class=""/>
该方式使用mapper接口的全限定类名;
此方式要求Mapper接口Mapper映射文件名称相同且在同一个目录下。
方式四:<package name=""/>
该方式是加载指定包下的所有映射文件
此方式要求Mapper接口Mapper映射文件名称相同且在同一个目录下。