什么是MyBatis
MyBatis是一个半ORM框架(对象关系映射):通过XML或注解的方式将Java对象映射到关系型数据库中的数据表中。它可以帮助开发者摆脱大量重复、繁琐的JDBC代码,从而更加方便地进行数据库操作。专注于SQL语句,不用关心JDBC操作的其他流程。
Hibernate是一个全ORM框架,底层都是基于JDBC封装的框架。
ORM全称为Object-Relational Mapping,即对象关系映射。它是一种编程技术,通过使用元数据(例如XML配置文件或注解)可以将面向对象的编程语言中的对象和关系型数据库中的数据进行互相转换和映射。
MyBatis优点:
1,封装JDBC,减小了我们java代码量
2,基于SQL语句编程,先对灵活。SQL语句写在XML里,实现SQL语句和java代码的解耦,提供了xml标签,来实现动态SQL语句,并可以重用(SQL代码块)
3,很好的与各种数据库兼容
4,能够与Spring很好的集成
5,提供映射标签,动态SQL语句
6,支持插件机制,开发者可以编写自己的插件,扩展其功能。
MyBatis缺点:
1,SQL语句的编写工作量较大,尤其当字段多、关联表多时。
2,SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
MyBatis的工作原理:(理解图)
1,读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行 环境等信息,例如数据库连接信息。
2,加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。
构建会话工厂 SqlSessionFactory。
-
SimpleExecutor:每执行一次update或select,就创建一个Statement对象。用完立刻关闭Statement对象。
-
ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建。用完后,不会真正关闭Statement对象,而是把Statement对象缓存起来供下一次使用。(默认使用)
-
BatchExecutor:执行update(没有select,JDBC批处