mybatis学习(初识mybatis)

什么是Mybatis

Mybatis本是Apache的一个开源项目--ibatis,2010年这个项目由Apache Software Foundation 迁移到了 Google Code并且改名 MyBatis。

Mybatis是一个基于java语言的持久层框架,同时它跟Hibernate一样属于对象关系映射框架。

MyBatis 提供的持久层框架包括 SQL Maps DataAccess Objects DAO ),它消除了几乎所 有的 JDBC 代码和参数的手工设置 以及结果集的检索。MyBatis 使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs ( Plain Old Java Objects 普通的 Java 象)映射成数据库中的记录。

Mybatis相对于Hibernate而言是一个半自动映射的框架,因为 Mybatis需要手动匹配POJO、 SQL和映射关系,而Hibernate只需要提供POJO和映射关系即可,这样对比Mybatis确实要比Hibernate的工作量大,且需要编写SQL语句也更加麻烦,但是Mybatis可动态的配置SQL并且能够优化SQL,同时还支持存储。并且Hibernate自身也存在一些缺点,例如它在多表关联时,对SOL查询的支持较差 ;更新数据时,需要发送所有字段;不支持存储过程;不能通过优化SOL来优化性能等这些问题导致其只适合在场景不太复杂且对性能要求不高的项目中使用。

总之,Mybatis是一个小巧、方便、高效、简单、直接、半自动映射的持久层框架,而Hibernate是一个强大、方便、高效、 复杂、间接、全自动映射的持久层框架。它俩各有优缺点,如何选择还是得根据实际项目。

 

Mybaytis的工作原理

1.读取MyBatis配置文件mybatis-config.xml ,mybatis-config.xml作为MyBatis的全局配置文件,配置了 MyBatis 的运行环境等信息,其中主要内容是获取数据库连接。

mybatis学习(初识mybatis)_第1张图片

2.加载映射文件Mapper.xml, Mapper.xml 文件即 SOL 映射文件,该文件中配置了操作数据库的 SOL 语句,需要在mybatis-config .xml中加载才能执行,mybatis-config.xml可以加载多个配置文件,每个配置文件对应数据库中的一张表。

mybatis学习(初识mybatis)_第2张图片

3.构建会话,通过MyBatis的环境等配置信息构建会话工厂 SqlSessionFactory。

4.创建SqlSession对象,由会话工厂创建 SqlSession 对象,该对象中包含了执行 SOL的所有方法。

5.MyBatis底层定义了一个 Executor 接口来操作数据库,它会根据 SqlSession传递的参数动态地生成需要执行的 SOL 语句,同时负责查询缓存的维护。

6.在 Executor 接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装用于存储要映射的 SOL 语句的id 、参数等 Mapper.xml 文件中一个 SOL 对应一个 MappedStatement 对象 SOL的id即是 MappedStatement的id。

7.输入参数映射 在执行方法时, MappedStatement 对象会对用户执行SOL 语句的输入 参数进行定义(可以定义为 Map 、List 类型、基本类型和 POJO 类型), Executor执行器会通过MappedStatement对象在执行SOL前,将输入的Java对象映射到SOL语句中这里对输入参数的映射过程就类似于JDBC 编程中对preparedStatement 对象设置参数的过程。

8.输出结果映射 在数据库中执行完 SOL 语句后, MappedStatement 对象会对 SOL执行输出的结果进行定义(可以定义为 Map 和List 类型、基本类型、 POJO 类型), Executor执行器会通过MappedStatement对象在执行SOL 语句后,将输出结果映射至 Java 对象中。 这种将输出结果映射到Java 对象的过程就类似于JDBC编程中对结果的解析处理过程。

mybatis学习(初识mybatis)_第3张图片

 

在java程序的测试类中Mybatis的工作流程如下

mybatis学习(初识mybatis)_第4张图片

以上就是Mybatis的概念以及其工作流程。

你可能感兴趣的:(mybatis学习(初识mybatis))