[Mybatis]-Mybatis概述

一、什么是 Mybatis

Mybatis 英文官方文档

官方文档 给出的说明

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings.
MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results.
MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

大意如下

  • Mybatis 是一个持久层框架,它支持自定义 SQL ,存储过程 和 高级映射!

  • Mybatis 消除了几乎所有的 JDBC 代码,包括 手动设置参数,结果集提取等。

  • Mybatis 可以使用简单的 XML 文件或者 注解来配置和映射原生类型、接口和 POJO。

一句话,Mybatis 是对 JDBC 的轻量级封装。

二、对比 Mybatis 和 JDBC

通过数据库查询案例来对比 Mybatis  和 JDBC。

初始化一张用户表,同时表中存入少量用户信息数据,如下图:

[Mybatis]-Mybatis概述

2.1、使用 JDBC 进行数据库查询

相关操作代码如下

[Mybatis]-Mybatis概述

上述代码的执行步骤如下:

  • 1、获取链接 Connection

  • 2、根据 SQL 构建预处理对象 PreparedStatement

  • 3、设置 SQL 参数

  • 4、如果需要手动操作事务,还需要开启事务

  • 5、执行 SQL 获取结果集 ResultSet

  • 6、将结果集映射到我们指定的对象中

  • 7、如果手动开启事务,此时需要提交事务

  • 8、关闭连接

2.2、使用 Mybatis 进行数据库查询

相关操作代码如下

[Mybatis]-Mybatis概述

Mybatis 执行SQL语句完成查询需要的步骤:
1、加载 xml 配置文件,获取 Sqlsession
2、从 Sqlsession 中获取相关 Mapper.class API接口文件
3、直接调用 Mapper.class 文件进行访问。

当 Mybatis 整合 Spring 之后, Mapper.class 直接托管给了 spring

当然了,上面是 Mybatis 执行操作时的步骤,但是在完成这些功能前,需要提前准备好相关的配置信息,以及类,如下图:

[Mybatis]-Mybatis概述

 

  • mybatis-config.xml
    mybatis 配置信息,。如:mysql 链接信息,mybatis 运行参数等。如下:
     

    [Mybatis]-Mybatis概述

  • domain 文件下的 UserInfo.class
    Mybatis 进行结果集映射需对应的 Java对象
  • UserInfoMapper.xml
    维护有执行的 SQL 语句,Java 对象 与 Mysql 映射关系。如下[Mybatis]-Mybatis概述
  • UserInfoMapper.class
    提供给用户调用的 API,与 UserInfoMapper.xml 中的 SQL 语句进行关联

2.3、对比 JDBC 和 Mybatis 

JDBC 的查询步骤较为繁琐,步骤较多,代码量也较多。同时有 ResultSet 结果集映射,Preparestatment 处理时的入参设置等都是比较繁琐的。开发效率不高。

Mybatis 对JDBC 结果集的映射、入参的设置做封装,通过代码的方式自动完成参数值和对象的映射,极大的简化了代码量。同时通过 xml 文件对 sql 文件进行了统一存储管理。

Mybatis 同样存在问题,使用 Mybatis 需要维护一定量的配置文件,增加代码复杂度。(不过有了 SpringBoot 之后,相关的 starter 已经默认配置好了相关配置)

总体来说,使用 Mybatis 代替原生JDBC利大于弊。

三、推荐书籍

《MyBatis技术内幕》

电子版书籍关注公众号,电子书模块获取。

[Mybatis]-Mybatis概述