mybatis架构介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:

1.封装JDBC操作
2.利用反射打通Java类与SQL语句之间的相互转换

MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。

MyBatis的主要成员

Configuration        MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中
SqlSession            作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能
Executor               MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等
ParameterHandler  负责对用户传递的参数转换成JDBC Statement 所对应的数据类型
ResultSetHandler   负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
TypeHandler          负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
MappedStatement  MappedStatement维护一条<select|update|delete|insert>节点的封装
SqlSource              负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql              表示动态生成的SQL语句以及相应的参数信息

以上主要成员在一次数据库操作中基本都会涉及,在SQL操作中重点需要关注的是SQL参数什么时候被设置和结果集怎么转换为JavaBean对象的,这两个过程正好对应StatementHandler和ResultSetHandler类中的处理逻辑。

SSM项目从零开始到入门004-mybatis架构介绍相关推荐

  1. 【手把手教你整合SSM项目并且完成入门项目到成功运行!!!】

    整合ssm框架的步骤 一. 准备工作:创建一个存放学生数据的数据库表 CREATE DATABASE `ssm_student`; USE `ssm_student`; DROP TABLE IF E ...

  2. SSM项目使用junit单元测试时Mybatis通配符加载Mapper不能正常加载

    问题描述:项目使用maven build 以及tomcat run能够正常运行,但是使用junit单元测试时却报错误 Caused by: java.lang.IllegalArgumentExcep ...

  3. 1.Prometheus监控入门之基础架构介绍

    0x00 前言简述 0.学习导读 1.开源监控系统简史 2.Prometheus 基础简介 3.Prometheus 架构组件 4.Prometheus 基本原理 5.Prometheus 数据模型和 ...

  4. 快速搭建SSM项目【最全教程】~令狐小哥版

    快速搭建SSM项目[最全教程]~令狐小哥版 文章目录 快速搭建SSM项目[最全教程]~令狐小哥版 一.创建项目 二.集成spring依赖 三.创建applicationContext.xml文件 四. ...

  5. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  6. 淘宝电商项目落地,从零开始搭建亿级系统架构笔记

    电商亿级系统架构设计笔记,分为:基础篇.数据库篇.缓存篇.消息队列篇.分布式服务篇.维护篇.实战篇.通过学习这份笔记,你可以系统的学会从零开始搭建亿级系统架构.其中每篇中又有具体的设计实施的笔记供大家 ...

  7. idea创建SSM项目(Spring+SpringMVC+MyBatis)

    idea创建SSM项目(Spring+SpringMVC+MyBatis) 项目创建 创建数据库 自动生成mapper 先做一个简单的测试 以下配置 可参考博客https://blog.csdn.ne ...

  8. SSM项目使用Mybatis通用mapper插件tk.mybatis的用法

    SSM项目使用Mybatis通用mapper插件tk.mybatis的用法 https://blog.csdn.net/qq_40060806/article/details/82949722 TKm ...

  9. Maven 创建 Spring、SpringMVC、Mybatis(SSM)项目

    创建maven SSM项目 包名.目录 POM文件 <?xml version="1.0" encoding="UTF-8"?> <proje ...

最新文章

  1. [SSH] Eclipse+Struts+Hibernate的简单应用
  2. 使用HTML5在浏览器中开发虚拟现实业务
  3. matlab解常微分方程,Matlab中解常微分方程的ode45
  4. CSS控制表格的方法
  5. flume案例-文件数据采集-运行测试
  6. mysql数据库优化课程---13、mysql基础操作
  7. Memcached 使用 及.NET客户端调用
  8. win7系统找不到我的电脑图标的应对办法
  9. Shell脚本中的并发(转)
  10. Python 进阶—— list 的头插和尾插
  11. 关于Windows高DPI的一些简单总结
  12. python函数可以改变哪种数据类型的实参_表达式1+2*3.140的结果类型是():_学小易找答案...
  13. linux spyder 安装,Python开发环境Spyder安装方法(示例代码)
  14. matlab freqz-m,Matlab函数freqs和freqz
  15. 形式化验证工具——prism(1-安装)
  16. 单片机设计 电子琴音乐盒(AT89C51)
  17. 排序公式 与 组合公式
  18. 敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
  19. linux平台使用yum安装mysql
  20. 有位置,来,搬个小板凳,喝酒听故事!

热门文章

  1. Android-O wifi PNO扫描流程
  2. MySQL错误:Column ‘pno‘ in field list is ambiguous是什么问题呢?
  3. 用launch文件在rviz中加载机器人模型
  4. Qt编写安防视频监控系统55-布局方案
  5. python神经网络训练效果差_为什么我的神经网络验证精度比我的训练精度高,并且两者都变得恒定? - python...
  6. layui 单图片上传 多图片批量上传
  7. Mac终端解压缩命令大全
  8. [译] 2019 前端性能优化年度总结 — 第五部分
  9. html+text+shadow语法,text-shadow属性怎么用
  10. 【卫朋】智能硬件 | 做好一款电子硬件产品,工具必不可少