在JavaWeb项目开发中,我们使用最多的ORM框架可能就是Mybatis了,那么对于常用的mybatis,你究竟了解多少呢?
一 原理 战前磨刀
01.Mybatis是什么
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码,手动设置参数以及获取结果集
MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录
02. Mybatis如何操作数据库
支持三种操作方式
1)注解
2)语句构建器
3)xml文件与接口映射方式
03. Mybatis的缓存机制
缓存的重要性是不言而喻的。考虑到性能,几乎所有与性能相关工具都会涉及到使用缓存, 我们可以避免频繁的与数据库进行交互, 尤其是在查询越多、缓存命中率越高的情况下, 使用缓存对性能的提高更明显。这个不在本篇细讲,到时候会专门作为一期内容呈现
04. Mybatis的执行流程
1) 加载配置 配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中
2) SQL解析 当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数
3) SQL执行 将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果
4) 结果映射 将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回
--摘自《Mybatis》百度百科
05. 执行流程-源码分析
mybatis的对数据库的底层操作,如Spring JDBC一样,实际上也是对JDBC的一个封装,它的底层原理依旧是JDBC。所以依然遵从JDBC的6个步骤
a 加载数据库驱动
b 建立链接
c 创建statement
d 执行SQL语句
e 处理结果集
f 关闭数据库
通过跟踪使用xml方式的查询方法源码,我们一路走下来是这样的:
1)建立连接
2)获取xml文件与接口中的对应方法
3)创建statement,并执行sql语句,返回结果集