Mybatis架构简介

Mybatis与ORM

对象关系映射(即Object Relational Mapping,简称ORM),主要用于关系型数据库和实体之间的映射,主要为了解决对象与关系数据库存在的互不匹配的现象,ORM通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。Java典型的ORM中间件有:Hibernate,Mybatis。

ORM是Object与Relation之间映射,包括Object->Relation和Relation->Object两方面。Hibernate是一个完整ORM框架。而MyBatis完成的是Relation->Object,MyBatis并不刻意于完成ORM(对象映射)的完整概念,而是旨在让开发人员使用更简单、更方便的方式完成数据库操作功能。

Mybatis架构

Mybatis的功能架构设计如下图所示:

接口层

接口层主要提供和数据库交互的方式,包括sqlSession和Mapper接口两种方式。通过SqlSession接口和Mapper接口开发人员可以通知MyBatis框架调用那一条SQL命令以及SQL命令关联参数。

数据处理层

数据处理层可以说是MyBatis的核心,从大的方面上讲,它要完成三个功能: 通过参数构建动态SQL语句、SQL语句的执行以及查询结果类型转换List

基础支撑层

支撑层用来完成MyBaits与数据库基本连接方式以及SQL命令与配置文件对应.主要负责:连接方式管理、事务管理、配置方式管理、缓存管理

Mybatis调用流程

如上图所示,MyBatis的主要的核心部件有以下几个:

  • SqlSession

    作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能

  • Executor

    MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护

  • StatementHandler

    封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。

  • ParameterHandler

    负责对用户传递的参数转换成JDBC Statement 所需要的参数,

  • ResultSetHandler

    负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;

  • TypeHandler

    负责java数据类型和jdbc数据类型之间的映射和转换

  • MappedStatement

    MappedStatement维护了一条<select|update|delete|insert>节点的封装,

  • SqlSource

    负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回

  • BoundSql

    表示动态生成的SQL语句以及相应的参数信息

  • Configuration

    MyBatis所有的配置信息都维持在Configuration对象之中。

参考https://blog.csdn.net/qq_27886997/article/details/78073379

Mybatis框架使用

Mybatis的使用方式有两种,一种是基于XML配置文件,它将SQL命令声明在XML配置文件中;两一种是基于注解方式,它将SQL命令声明在注解中。

原文地址:https://www.cnblogs.com/liuyi6/p/10085344.html

时间: 2024-10-10 18:12:14

Mybatis架构简介的相关文章

浅出深入MySQL-MySQL架构之架构简介

MySQL架构简介 MySQL服务器由SQL层和存储引擎层构成.SQL层功能包括权限判断.SQL解析和查询缓存处理等,存储引擎层则是完成底层数据库数据存储操作.如下图: SQL层可分为三层,分别是连接/线程处理层.查询缓存和查询分析器层.优化器层.连接/线程处理层主要用来处理客户端的请求.身份验证和数据库安全性验证等.查询缓存和查询分析器层是SQL层里头的核心部分,负责查询的解析.优化.缓存,以及所有内置的函数.存储过程.触发器.视图等.优化器主要负责存储和获取所有存储在数据库中的数据.

openstack架构简介J版(更新中)

title : OPENSTACK架构简介 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算?软件,以Apache许可证授权,并且是一个自由软件和开放源代码项目. 通俗点来讲,openstack就是一个用python编写的linux软件,openstack是一个开源云平台. openstack能干嘛? openstack最基础的功能就是产生云主机(vm虚拟机),用这些虚拟机可以做你想做的很多事.例如产生一

自己动手写处理器之第一阶段(3)——MIPS32指令集架构简介

将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第四篇,我尽量每周四篇 1.4 MIPS32指令集架构简介 本书设计的处理器遵循MIPS32 Release 1架构,所以本节介绍的MIPS32指令集架构指的就是MIPS32 Release 1. 1.4.1 数据类型 指令的主要任务就是对操作数进行运算,操作数有不同的类型和长度,MIPS32提供的基本数据类型如下. 位(b):长度是1bit. 字节(Byte):长度是8bit. 半字(Half Word):长度是16bit. 字(

SpringMVC+Mybatis架构中的问题记录

2014/08/16 记录 今天遇到个问题,折腾了我大约4个小时,好坑啊因为之前没遇到过 我的包是这么分的:com.工程名.模块名.service.impl     在spring 配置这个切面 execution(* com.工程名..*Impl.*(..)) 他 就是找不到com.工程名.模块名.service.impl下面的*Impl类 并且此配置就算配错了,他不报错,并且当我同时用junit测试,同时加载三个配置文件 springMVC.xml spring.xml spring-myb

淘宝高性能可伸缩平台架构简介 (转)

一 应用无状态(淘宝session框架) 假如在session中保存了大量与客户端的状态信息,保存状态信息的server宕机时 通常通过集群解决,不仅有负载均衡,更重要的是要有失效恢复failover tomcat用集群节点广播复制,jboss用配对复制等session状态复制策略,但严重影响系统的伸缩性,不能通过增加更多的机器达到良好的水平伸缩 因为集群节点间session通信随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,要保证应用无状态,这样集群中的各个节点来说都是相同的,使系统更

Unit07: MyBatis框架简介 、 MyBatis基本应用

Unit07: MyBatis框架简介 . MyBatis基本应用 1. myBatis (1)myBatis是什么? 是一个开源的持久层框架. 注:myBatis底层仍然是jdbc. (2)编程步骤 step1. 导包. mybatis,ojdbc,junit. step2. 添加配置文件. 注:配置文件主要包含连接池的配置和映射文件的位置. step3. 写实体类. 注:属性名必须跟表的字段名一样(大小写不区分). step4. 写映射文件. 注:映射文件主要包含的是sql语句. step5

Mybatis架构

Mybatis架构 1. mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句.此文件需要在SqlMapConfig.xml中加载. 2. 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂 3. 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行. 4. mybatis底层自

鸟哥的 Linux 私房菜(服务器) 第三章 局域网络架构简介 第四章 连上 Internet

鸟哥的 Linux 私房菜(服务器) 第三章 局域网络架构简介 第四章 连上 Internet [TOC] 3.1 局域网络的联机 3.1.1 局域网络的布线规划 3.1.1-1 Linux 直接联网-与 PC 同地位 3.1.1-2 Linux 直接联网-与一般 PC 分开网域 3.1.1-3 Linux 直接联网-让 Linux 直接管理 LAN 3.1.1-4 Linux 放在防火墙后-让 Linux 使用 Private IP 3.2 本书使用的内部联机网络参数与通讯协议 3.2.1 联

《深入了解mybatis原则》 MyBatis架构设计和案例研究

MyBatis这是现在很流行ORM框架,这是非常强大.事实上现却比較简单.优雅. 本文主要讲述MyBatis的架构设计思路,而且讨论MyBatis的几个核心部件.然后结合一个select查询实例.深入代码,来探究MyBatis的实现. 一.MyBatis的框架设计        注:上图非常大程度上參考了iteye 上的chenjc_it所写的博文原理分析之二:框架总体设计 中的MyBatis架构体图,chenjc_it总结的很好,赞一个! 1.接口层---和数据库交互的方式 MyBatis和数