Mybatis学习笔记 —— 01 Mybatis原理
Mybtis中文官方文档:https://mybatis.org/mybatis-3/zh/index.html
一、什么是Mybatis

Mybatis是一款优秀的持久层框架,支持自定义 SQL、存储过程以及高级映射,MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
持久层:持久层,可以理解成数据保存在数据库或者硬盘一类可以保存很长时间的设备里面,不像放在内存中那样断电就消失了,也就是把数据存在持久化设备上。
二、Mybatis与传统JDBC的比较
JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
JDBC,MyBatis的区别:
- 从层次上看,JDBC是较底层的持久层操作方式,而MyBatis都是在JDBC的基础上进行了封装,使其更加方便程序员对持久层的操作。
- 从功能上看,JDBC就是简单的建立数据库连接,然后创建statement,将sql语句传给statement去执行,如果是有返回结果的查询语句,会将查询结果放到ResultSet对象中,通过对ResultSet对象的遍历操作来获取数据;MyBatis是将sql语句中的输入参数和输出参数映射为java对象,sql修改和优化比较方便。
- 从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要灵活使用sql语句的话建议采用MyBatis框架。
MyBatis相比JDBC的优势:
- MyBatis使用已有的连接池管理,避免浪费资源,提高程序可靠性。
- MyBatis提供了一级和二级缓存(需要配置打开),提高了程序性能。
- MyBatis使用动态SQL语句,提高了SQL维护。(此优势是基于XML配置)
- MyBatis可使用配置文件管理sql语句:使用JDBC对数据库进行操作时,SQL查询语句分布在各个Java类中,这样可读性差,不利于维护,当我们修改Java类中的SQL语句时要重新进行编译;Mybatis可以把SQL语句放在配置文件中统一进行管理,以后修改配置文件就行,也不需要重新编译部署。
- MyBatis对数据库操作结果进行自动映射:在使用JDBC进行查询时,返回一个结果集ResultSet,我们要从结果集中取出结果封装为需要的类型;在Mybatis中可以设置将结果直接映射为自己需要的类型,比如:JavaBean对象、一个Map、一个List等等。
- 一致的编码风格大大减少了代码的沟通交流成本。
三、Mybatis的工作原理

- 读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息,将配置信息封装成 Configuration 对象传给 SqlSessionFactoryBuilder
- 加载映射文件。映射文件即Sql映射文件,该文件中配置了操作数据库的Sql语句,在MyBatis配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件
- 构造会话工厂。通过Configuration 对象,SqlSessionFactoryBuilder 构建会话工厂 SqlSessionFactory
- 创建会话对象。由会话工厂SqlSessionFactory创建 SqlSession 对象,该对象中包含了执行Sql语句的所有方法
- SqlSession 对象执行Sql语句,完成和数据库的交互,并且提交或者回滚事务

浙公网安备 33010602011771号