1、相关下载或学习资料的网站链接
mybatis下载各版本网站:https://githua.com/mybatis/mybatis-3/releases
mybatis学习网站:https://mybatis.org/mybatis-3/zh/index.html
https://www.mybatis.org/mybatis-3/zh/getting-started.html
mybatis学习博客:Mybatis教程-实战/https://blog.csdn.net/hellozpc/article/details/80878563
tomcat下载:https://tomcat.apache.org/
jdk下载:https://www.oracle.com/technetwork/java/javase/downloads/index.html/https://www.oracle.com/java/technologies/javase-jdk13-downloads.html
eclipse下载:https://www.eclipse.org/downloads/packages/release
2、Mybatis的相关了解
框架,是某种项目的半成品,已帮助我们完成项目的底层基础工作。
**SSM = Spring+SpringMVC+Mybatis**
2.1MyBatis是什么?
[MyBatis](https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin) 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的**持久层框架**。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。**MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。**
总而言之MyBatis是一个轻量级**简化数据库操作的框架**。
Mybatis的应用程序使用SqlSessionFactory实例,其通过SqlSessionFactoryBuilder获得,SqlSessionFactoryBuilder可以从xml配置文件或预定义的配置类的实例获得。
2.2特点
简单易学:本身简单很小,没有第三方依赖,只需安装2个jar文件+配置几个sql映射文件。
灵活:sql写在xml里,便于统一管理和优化。
解除sql与程序代码的耦合:通过提供dao层,将业务逻辑和数据访问逻辑分离,使系统易维护和测试。
提供xml标签,支持编写动态sql。
2.3**总体流程**
**(1)加载配置并初始化**
触发条件:加载配置文件
处理过程:将sql的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
**(2)接收调用请求**
触发条件:调用Mabatis提供的API
传入参数:SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求层进行处理。
**(3)处理操作请求**
触发条件:API接口层传递请求过来
传入参数:SQL的ID和传入参数对象
处理过程:
①根据sql的ID查询对应的MappedStatement对象
②根据传入参数对象解析MappedStatement对象,得到最终要执行的sql和执行传入参数。
③获取数据连接,根据得到的最终sql语句和执行传入参数到数据库执行,并得到执行结果。
④根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
⑤释放连接资源
**(4)返回处理结果将最终的处理结果返回**
2.3**功能架构**
**(1)API接口层**:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
**(2)数据处理层**:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
**(3)基础支撑层**:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
2.4 **框架架构**
**(1)加载配置**:配置有配置文件、Java代码的注解,将sql的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
**(2)SQL解析**:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(Map\JavaBean\接本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
**(3)SQL执行**:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。
**(4)结果映射**:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。