Mybatis学习笔记

1.Mybatis是什么
MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集,
它可以使用简单的XML或注解来配置和映射SQL信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

2.基础知识回顾
在这里插入图片描述

架构流程图:

在这里插入图片描述

说明:
1. mybatis配置文件
mybatis-Config.xml:此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
Mapper.xml:此文件作为mybatis的sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在mybatis-Config.xml中加载。

2. SqlSessionFactory
通过mybatis环境等配置信息构造SqlSessionFactory,即会话工厂。

3. sqlSession
通过会话工厂创建sqlSession即会话,程序员通过sqlsession会话接口对数据库
进行增删改查操作。

4. Executor执行器
mybatis底层自定义了Executor执行器接口来具体操作数据库,Executor接口有两个实现,一个是基本执行器(默认)、一个是缓存执行器,sqlsession底层是通过executor接口操作数据库的。

5. Mapped Statement
它也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。
mapper.xml文件中一个select\insert\update\delete标签对应一个
Mapped Statement对象,select\insert\update\delete标签的id即是Mapped statement的id。
Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

MyBatis层次结构

在这里插入图片描述

1.SqlSession:接收开发人员提供Statement Id 和参数.并返回操作结果
2.Executor:MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
3.StatementHandler:封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合
4.ParameterHandler:负责对用户传递的参数转换成JDBC Statement 所需要的参数
5.ResultSetHandler:负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
6.TypeHandler:负责java数据类型和jdbc数据类型之间的映射和转换
7:MappedStatement:维护了一条<select|update|delete|insert>节点的封装
8.SqlSource:负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到
BoundSql对象中,并返回BoundSql表示动态生成的SQL语句以及相应的参数信息
9.Configuration: MyBatis所有的配置信息都维持在Configuration对象之中。

mapper代理执行原理

在这里插入图片描述

补充:在SqlSource接口中:
1.DynamicSqlSource:主要是封装动态SQL标签解析之后的SQL语句和带有 $ {}的
SQL语句(动态标签和${}都是拼接sql语句)
2.RawSqlSource:主要封装带有#{}的SQL语句
3.StaticSqlSource:是BoundSql中要存储SQL语句的一个载体,上面两个SqlSource
的SQL语句,最终都会存储到该SqlSource实现类中。

网上找的大佬的图,分享一下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值