一文详解MyBatis框架解决的主要问题

101 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

MyBatis框架概述

MyBatis 框架:

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

iBATIS 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的持久层框架。iBATIS 提供的持久层框架包括 SQL Maps 和 Data Access Objects(DAOs)

当前,最新版本是 MyBatis 3.5.7 ,其发布时间是 2021 年 4月 7日。

MyBatis框架解决的主要问题

减轻使用 JDBC 的复杂性,不用编写重复的创建 Connetion , Statement ; 不用编写关闭资源代码。直接使用 java 对象,表示结果数据。让开发者专注 SQ L 的处理。 其他分心的工作由 MyBatis 代劳。

MyBatis 可以完成:

注册数据库的驱动,例如 Class.forName(“com.mysql.jdbc.Driver”))

创建 JDBC 中必须使用的 Connection  , Statement, ResultSet 对象

从 xml 中获取 sql,并执行 sql 语句,把 ResultSet 结果转换 java 对象

List<Student> list = new ArrayLsit<>();

ResultSet rs = state.executeQuery(“select * from student”);

while(rs.next){

Student student = new Student();

student.setName(rs.getString(“name”)); student.setAge(rs.getInt(“age”));

list.add(student);

}

关闭资源

ResultSet.close() , Statement.close() , Conenection.close()

MyBatis框架的结构

image.png

1、mybatis配置

SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

2、通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

3、由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

4、mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5、Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

6、Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7、Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。