专栏首页令仔很忙Mybaits深入了解(一)----带你入门

Mybaits深入了解(一)----带你入门

Mybatis简介


MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。

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

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

Mybatis架构


功能架构

功能架构如下图:

分为三层,接口层,数据处理层,基础支撑层。

  • API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
  • 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
  • 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

框架

下图是mybatis的框架图:

1、mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。 2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂 3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。 4、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。 5、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从入门到住院(二)—-入门实例中会用实例来给大家讲解Mybatis的CRUD。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hibernate从入门到放弃(二)----和这个世界打声招呼(HelloWorld)

    2)、新建项目hw_hibernate 3)、导入Jar包 请下载hibernate_lib.zip拷贝到lib目录下 4)、新建配置文件hiber...

    令仔很忙
  • 软件文档总结(二)

       软件需求主要是从从现实中分离功能,描述软件要“做什么”,在软件需求说明书中,主要的功能和联系如下:

    令仔很忙
  • EasyUI----DataGrid 导出 Excel

    最近做的安防项目有个功能,需要把DataGrid中的数据导出,下面通过代码一步一步的介绍; 首先在js中写一个扩展类,主要的功能是把DataGrid中的数据...

    令仔很忙
  • mybatis_基础篇

    一、认识mybatis:     MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software founda...

    赵小忠
  • Beats数据采集---Packetbeat\Filebeat\Topbeat\WinlogBeat使用指南

    Beats是elastic公司的一款轻量级数据采集产品,它包含了几个子产品: packetbeat(用于监控网络流量)、 filebeat(用于监听日志数...

    用户1154259
  • 八大排序算法的 Python 实现!

    今天CoCo酱给大家介绍一下关于八大排序算法的Python实现,对八大排序算法进行详细描述和代码实现,下面我们一起来看一下吧。 1、插入排序 描述: 插入排序的...

    企鹅号小编
  • 排序算法python实现

    jeremyxu
  • 计时器 hook

    copy_left
  • 细节决定成败——参考文献编写原则

    在写作过程中,正文中的参考文献顺序是繁琐且重要的。目前已有较多的文献管理软件如Endnote、Notedxpress、Mendeley等帮助我们进行管理,以便自...

    Mark Chen
  • Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)

    a:数据库的相关知识:   (1):一个表能否有多个主键:不能;   (2):为什么要设置主键:数据库存储的数据都是有效的,必须保持唯一性;   (3)...

    别先生

扫码关注云+社区

领取腾讯云代金券