MyBatis 框架工作流程

MyBatis 框架工作流程

1.MyBatis项目列表

官网列出的项目列表:

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

整合项目:

项目描述
Spring与Spring集成
Spring Boot Starter与Spring Boot集成
Guice与Guice集成
CDI与CDI集成
VelocityVelocity脚本插件
FreemarkerFreemarker脚本插件
OSCacheOSCache缓存插件
EHCache的Ehcache缓存插件
HazelcastHazelcast缓存插件
MemcachedMemcached缓存插件
RedisRedis缓存插件
IgniteApache 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值