什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

其主要就完成2件事情:

1.封装JDBC操作
2.利用反射实现Java类与SQL语句之间的相互转换

MyBatis 核心对象

对象名称 功能描述
Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中。
SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能
Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等。
ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所对应的数据类型
ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
TypeHandler 负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
MappedStatement MappedStatement维护一条<select|update|delete|insert>节点的封装
SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql 表示动态生成的SQL语句以及相应的参数信息

Mybaits 的优点:

  • 1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任
    何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML
    标签,支持编写动态 SQL 语句,并可重用。

  • 2、与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不
    需要手动开关连接;

  • 3、很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要
    JDBC 支持的数据库 MyBatis 都支持)。

  • 4、能够与 Spring 很好的集成;

  • 5、提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射
    标签,支持对象关系组件维护。

MyBatis 框架的缺点

  • 1、SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写
    SQL 语句的功底有一定要求。

  • 2、SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

MyBatis 框架适用场合:

  • 1、MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。

  • 2、对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是
    不错的选择

MyBatis 与 Hibernate 有哪些不同?

  • 1、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要
    程序员自己编写 Sql 语句。

  • 2、Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常
    适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需
    求变化要求迅速输出成果。但是灵活的前提是 mybatis 无法做到数据库无关性,
    如果需要实现支持多种数据库的软件,则需要自定义多套 sql 映射文件,工作量大。

  • 3、Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的
    软件,如果用 hibernate 开发可以节省很多代码,提高效率

作者:Jeebiz  创建时间:2020-05-29 21:34
 更新时间:2023-12-22 21:08