MyBatis 技术内幕 - MyBatis 介绍


读书笔记

  • 书籍名称:《MyBatis 技术内幕》
  • 编著姓名:徐郡明
  • 出版厂商:电子工业出版社
  • 源码版本:3.4.0+

MyBatis

  • 官方文档:http://www.mybatis.org/mybatis-3/zh/index.html

  • 源码下载:https://github.com/mybatis/mybatis-3/releases

  • 背景简介:

    1. 前身:iBatis ,Apache 开源项目
    2. 更名:MyBatis ,2010 年迁移到 Google Code
    3. 现在:2013年11月迁移到github
  • 框架体系:持久层框架,DAO (全名:Data Access Data 数据访问对象)层框架

  • 产生背景

    • JDBC(全名:Java DataBase Connection
      • 产生原因:Java 与 DataBase 之间连接的问题

      • 提供接口:

      • 执行流程:

        注册数据库驱动Class
        获取数据库连接Connection
        预编译SQL语句Statement
        运行SQL语句结果ResultSet
        运行结果封装
      • 框架缺点

        • 硬编码:程序代码中存在大量不可重复使用的业务逻辑
        • 高耦合:数据操作SQL与业务逻辑高度耦合在一起
        • 复用性:复用性极低,维护成本很高
        • 连接池:没有数据连接池,每一次数据请求都要重新发起一次数据库连接
        • 返回值:需要逐一从返回结果中取值
    • ORM(全名:Object Relation Mapping 对象关系映射)框架产生
      • 产生背景:实现Java中bean对象与DabaBase中表中数据自动映射
      • 主流框架:
        • Hibernate
        • MyBatis
    • Hibernate
      • 框架优势:
        • 完全映射:实现 bean 对象与 Db 中 record 的完全映射
        • 方便开发:开发过程中对于数据处理完全黑盒操作,不需要关注
        • 独立语言:不同于SQL(全名:Select Query Language)语言,使用HQL(全名:Hibernate Query Language)语言
      • 框架劣势:
        • 不灵活性:由于Hibernate实现的是完全映射,导致每一次都是返回表中全部的字段,即使只需要一个字段,也需要全表查询
        • 索引使用:由于Hibernate完全屏蔽了数据操作的处理,导致SQL查询语句无法准备的使用到索引,无法对SQL语句进行优化
        • 独立语言:由于Hibernate使用HQL语言,不同于SQL,额外增加学习成本
    • MyBatis
      • 框架优势
        • 支持缓存:提供一级、二级缓存使用
        • 动态SQL:根据业务需求编写SQL,返回字段数量任意
        • 索引优化:MyBatis 底层应用SQL语言,可以根据需要添加索引
        • 配置方便:根据业务需求添加字段映射,支持多表级联
      • 框架劣势
        • 半自动化:MyBatis 不是完全映射的框架,需要手动维护Java Bean 与 映射关系文件
  • 组成部分

    • PO (全名:Persistence Object):持久化对象,即 Java Bean
    • mapper.java :DAO层对外提供的API接口定义
    • mapper.xml:DAO层对外提供的API接口的SQL实现
  • 执行流程

    解析 mybatis-conf.xml 配置文件
    单例模式生成 Configuration 对象
    Configuration 生成 SqlSessionFactory 工厂类
    SqlSessionFactory 生成 SqlSession 对象
    SqlSession 执行 Mapper.xml 中 SQL 语句
    commint or rollback ?
    对象关闭
    Created with Raphaël 2.2.0开始解析 mybatis-conf.xml 配置文件单例模式生成 Configuration 对象Configuration 生成 SqlSessionFactory 工厂类SqlSessionFactory 生成 SqlSession 对象SqlSession 执行 Mapper.xml 中 SQL 语句commint or rollback ?结束yes

MyBatis 整体架构

MyBatis 技术内幕 - MyBatis 介绍

相关文章:

  • 2021-07-16
  • 2021-09-06
  • 2021-07-06
猜你喜欢
  • 2021-08-19
  • 2021-10-25
  • 2021-07-11
  • 2021-09-01
  • 2022-12-23
  • 2021-10-01
  • 2021-06-18
相关资源
相似解决方案