MyBatis概述

一、什么是MyBatis

MyBatis 本是 Apache 的一个开源项目 iBatis2010年这个项目由Apache Software Foundation迁移到 了Google Code,并且改名为MyBatis

iBATIS一词来源于“internet”“abatis”的组合,是一个基于Java的持久层框架,iBATIS提供的持久层框 架包括SQL MapsData Access ObjectsDAOs)。

MyBatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、 结果集检索等JDBC繁杂的过程代码。

MyBatis通过 xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过 Java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由MyBatis框架执行sql并将结果 映射成Java对象并返回。

二、MyBatis的优点

1、灵活:

Mybatis不会对应用程序或者数据库的现有设计强加任何影响,sql写在xml里,便于统一管理和优

化。 通过sql语句可以满足操作数据库的所有需求。

2、解除sql与程序代码的耦合:

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

3、提供丰富且强大的标签:

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

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

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

三、整体架构

1MyBatis配置:

mybatis-config.xml(名称不固定),此文件作为MyBatis的全局(核心)配置文件,配置了

MyBatis的运行环境等信息。

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

2、会话工厂:

通过MyBatis环境等配置信息构造SqlSessionFactory

3、创建SqlSession:

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

4、定义执行器:

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

5MappedStatement也是MyBatis一个底层封装对象:

MybatisSQL的配置信息加载成为一个个 MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。mapper.xml文件中一个sql对应一个MappedStatement对象,sqlid即是MappedStatement的 id。

6MappedStatementsql执行输入参数进行定义:

包括HashMap、基本类型、字符串类型、实体类 类型,Executor通过MappedStatement在执行sql前将输入的Java对象映射至sql中,输入参数映射就是 JDBC编程中对PreparedStatement设置参数。

7MappedStatementsql执行输出结果进行定义:

包括HashMap、基本类型、字符串类型、实体类类型,Executor通过MappedStatement在执行sql后将输出结果映射至Java对象中,输出结果映射过程相当于JDBC编程中对结果的解析处理过程。

四、原理分析

1. 加载配置:

配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

2. SQL解析:

API接口层接收到调用请求时,会接收到传入SQLID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQLID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。

3. SQL执行:

将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。

4. 结果映射:

将操作数据库的结果按照映射的配置进行转换,可以转换成HashMapJavaBean或者基本数据类型,并将最终结果返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值