【Mybatis】深入浅出Mybatis(二)——Mybatis的框架

一、前言

      从这篇博客开始,就正式介绍一下我们的Mybatis,他是一个什么东西,为什么叫做框架?为什么会有很多人使用他?他的灵活的地方体现在哪里?伴随着这些疑问,在下面的博客中找到自己的答案吧。

二、什么是Mybatis?

这里写图片描述

      MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。 后来又托管到了GitHub上,大家可以在github上下载最新版本的Mybatis的jar包。

      MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理复杂的过程代码,例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

      Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

三、Mybatis框架结构

      下面是Mybatis的架构图,其中各个节点的作用已经写在上面大家可看出每个部分的作用:

这里写图片描述

      架构分析:

1. 读SqlMapConfig.xml。

       当调用与数据库有关的操作的时候,会读SqlMapConfig.xml文件中的信息,里面配置了Mybatis的运行环境信息,加载mapper.xml文件,即sql映射文件,文件中配置了操作数据库的sql语句。

2. 建立会话工厂。

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

3. 创建会话。

       工厂创建sqlSession,用来操纵数据库。

4. 执行器。

       mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5. Mapped Statement。

      Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

6. 输入参数读取。

       Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7. 输出参数类型处理。

       Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

四、小结

      说到一个架构就是对一些公共的部分进行封装,然后整理出来一套可以拓展的结构,这个在我们生活中非常实用。这种架构的思想是很值得琢磨的。

      下一篇博客将向大家介绍Mybatis的环境搭建。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值