MyBatis 框架工作流程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixx3/article/details/96422018

MyBatis 框架工作流程

1.MyBatis项目列表

官网列出的项目列表:

项目 描述
MyBatis 3 用于Java的SQL映射框架
Generator MyBatis代码生成器
Migrations 数据库变更迁移管理工具
Migrations Maven Plugin 数据库变更迁移管理工具Maven插件
MyBatipse MyBatis Eclipse插件
MyBatis for Scala 用于Scala的SQL映射框架
MyBatis Dynamic SQL 用于MyBatis和Spring JDBC模板的SQL生成器

整合项目:

项目 描述
Spring 与Spring集成
Spring Boot Starter 与Spring Boot集成
Guice 与Guice集成
CDI 与CDI集成
Velocity Velocity脚本插件
Freemarker Freemarker脚本插件
OSCache OSCache缓存插件
EHCache 的Ehcache缓存插件
Hazelcast Hazelcast缓存插件
Memcached Memcached缓存插件
Redis Redis缓存插件
Ignite Apache Ignite缓存插件

以上项目用于不同的框架中:
对于Spring Boot Servlet Web项目,它使用MyBatis框架需要如下依赖:
在这里插入图片描述实际加载的MyBatis项目有:
1和2:Spring Boot Starter 项目
3:MyBatis 3 项目
4:Spring 项目

在这里插入图片描述

参考:https://blog.mybatis.org/p/products.html

2.MyBatis3项目详情

2.1 MyBatis3层级结构

在这里插入图片描述

2.2 MyBatis3源码结构

在这里插入图片描述

2.3 MyBatis3工作流程

Spring MVC Web + Mybatis项目完整的执行过程:

在这里插入图片描述

SpringBoot Web项目通常会省去mybatis-config.xml,将配置信息挪到application.yml

3.MyBatis3重要组件

MyBatis 3项目中的重要组件如下:

  • 1.SqlSessionFactoryBuilder (构造器):使用Builder模式根据mybatis-config.xml配置或者代码来生成SqISessionFactory。
  • 2.SqlSessionFactory (工厂接口):使用工厂模式生成SqlSession。
  • 3.SqlSession (会话): 一个既可以发送 SQL 执行返回结果,也可以获取Mapper的接口。
  • 4.SQL Mapper (映射器): 它由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则,它负责发送SQL去执行,并返回结果。

在这里插入图片描述

参考:http://www.mybatis.org/mybatis-3/zh/getting-started.html

3.1 MyBatis主要模块

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

在这里插入图片描述

参考:http://www.mybatis.org/mybatis-3/configuration.htmlhttp://www.mybatis.org/mybatis-3/sqlmap-xml.html

3.3 MyBatis动态SQL

动态SQL MyBatis做了四件事:

  • 1.它以安全的方式执行SQL,并抽象出JDBC的所有复杂性
  • 2.它将参数对象映射到JDBC预准备语句参数
  • 3.它将JDBC结果集中的行映射到对象
  • 4.它可以使用XML中的特殊标记生成动态SQL,也可以通过使用各种模板引擎生成动态SQL

该库充分利用了MyBatis中的前三个功能,并且本质上成为另一个用于生成动态SQL的模板引擎。

参考:http://www.mybatis.org/mybatis-dynamic-sql/docs/howItWorks.html

3.4 MyBatis与JDBC

MyBatis底层用的还是JDBC;
JDBC执行流程:

//1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2. 获得数据库连接
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
//3.操作数据库,实现增删改查
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");

参考资料:
[ 1 ]. https://blog.mybatis.org/p/products.html
[ 2 ]. http://www.mybatis.org/mybatis-3/zh/getting-started.html
[ 3 ]. http://www.mybatis.org/mybatis-3/configuration.html
[ 4 ]. http://www.mybatis.org/mybatis-3/sqlmap-xml.html
[ 5 ]. http://www.mybatis.org/mybatis-dynamic-sql/docs/howItWorks.html

猜你喜欢

转载自blog.csdn.net/weixx3/article/details/96422018
今日推荐