• MyBatis介绍


    MyBatis介绍

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

    MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装。

    最新版本是MyBatis 3.5.11,其发布时间是2022年09月18日

    • MyBatis 是一款优秀的持久层框架

    • 它支持自定义 SQL、存储过程以及高级映射。

    • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

    • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

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

    • 2013年11月迁移到Github。

    理解:

    MyBatis的特点,其实应该是通过配置,实现了结果集的自动映射成对象。这样参数和结果集的操作,就变得非常简单了。

    另外,他也是操作sql的过程,只不过是框架内部自动做的转化,简化了人为编写sql的过程。实现了sql写在映射文件里,而代码就是代码。这样的分离。而不是jdbc这种混合在一个文件里的做法。

    为什么要对象化?

    其实对象化,是为了在编程的时候,可以直接操作对象,除了这个一点意外,还有一点,就是可以增加缓存处理等内存操作。其实,更好的理解就是字符串的操作,无法复用,检查等,所以需要将字符串序列化成对象,数据库当中的 表记录,同样存在这个问题,无法类型检查,无法依赖注入等等,所以需要对象化,才能提高开发的效率和价值。

    4.0 主要特点

    • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

    • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

    • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

    • 提供映射标签,支持对象与数据库的ORM字段关系映射。

    • 提供对象关系映射标签,支持对象关系组建维护。

    • 提供xml标签,支持编写动态sql。

    5.0 工作原理

    对象对比:

    JDBC有四个核心对象:
    (1)DriverManager,用于注册数据库连接
    (2)Connection,与数据库连接对象
    (3)Statement/PrepareStatement,操作数据库SQL语句的对象
    (4)ResultSet,结果集或一张虚拟表

    MyBatis也有四大核心对象:
    (1)SqlSession对象,该对象中包含了执行SQL语句的所有方法【1】。类似于JDBC里面的Connection 【2】。
    (2)Executor接口,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。类似于JDBC里面的Statement/PrepareStatement。
    (3)MappedStatement对象,该对象是对映射SQL的封装,用于存储要映射的SQL语句的id、参数等信息。
    (4)ResultHandler对象,用于对返回的结果进行处理,最终得到自己想要的数据格式或类型。可以自定义返回类型。

    在JDBC中,Connection不直接执行SQL方法,而是利用Statement或者PrepareStatement来执行方法。在使用JDBC建立了连接之后,可以使用Connection接口的createStatement()方法来获取Statement对象,也可以调用prepareStatement()方法获得PrepareStatement对象,通过executeUpdate()方法来执行SQL语句。而在MyBatis中,SqlSession对象包含了执行SQL语句的所有方法,但是它是委托Executor执行的。从某种意义上来看,MyBatis里面的SqlSession类似于JDBC中的Connection,他们都是委托给其他类去执行。

    工作原理

    上面中流程就是MyBatis内部核心流程,每一步流程的详细说明如下文所述:

    (1)读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。

    (2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。

    (3)构造会话工厂。通过MyBatis的环境配置信息构建会话工厂SqlSessionFactory。

    (4)创建会话对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

    (5)Executor执行器。MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。

    (6)MappedStatement对象。在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。

    (7)输入参数映射。输入参数类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输入参数映射过程类似于JDBC对preparedStatement对象设置参数的过程。

    (8)输出结果映射。输出结果类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输出结果映射过程类似于JDBC对结果集的解析过程。

    6.0 开发步骤

    MyBatis开发步骤:

    ①添加MyBatis的jar包

    ②创建Student数据表

    ③编写Studentr实体类

    ④编写映射文件StudentMapper.xml

    ⑤编写核心文件MyBatisConfig.xml

    ⑥编写测试类

    注意:MyBatis不会自动通过类对象生成数据库表,所以操作之前,数据库当中一定是已经存在了数据库的表。

  • 相关阅读:
    详解MySQL隔离级别
    【正点原子STM32连载】第二章 STM32简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
    Spring Boot Actuator 管理日志
    计算机网络—ENSP常用指令
    8D报告组成部分
    办理河南公司名称变更成无区域名称核名条件和流程
    【NodeJs-5天学习】第一天篇② —— 安装NodeJs环境以及VsCode开发工具
    大数据Eureka的使用以及应用场景详解
    【教程】使用vuepress构建静态文档网站,并部署到github上
    “可持续计划”,京东与华为双向奔赴背后的“三方共赢”
  • 原文地址:https://blog.csdn.net/dongdongdongJL/article/details/127986805