Mybatis框架

SSM框架Mybatis框架

MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。是一种“半自动化”的ORM实现。


MyBatis原理:他将在代码块中的sql存在统一的xml文件也就是sqlmaper中。同时他将你执行sql的传参也就是执行变量进行了通配,然后映射到你的model中。


MyBatis执行过程:通过factory方法获取sqlsession,通过MapperProxy代理到dao,执行底层数据库操作


MyBatis流程:加载配置并初始化;接受调用请求;处理操作请求;返回处理结果并将最终结果返回


处理过程

1.根据SQL的ID查找对应的MappedStatement对象

2.根据传入参数对象解析MppedStatement对象,得到最终要执行的SQL和执行传入参数

3.获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果

4.根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果

5.释放连接资源


MyBatis三层:

1.API接口层

提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理

2.数据处理层

负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作

3.基础支撑层

负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑


MyBatis优点

1.简单易学

2.灵活

3.设计清晰,易测试,易维护

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

5.提供对象关系映射标签,支持对象关系组件维护

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


MyBatis使用BatchExecutor完成批处理


Mybatis有三种基本的Executor执行器:SimpleExecutor、ReuseExecutor、BatchExecutor。

SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。

ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map内,供下一次使用。简言之,就是重复使用Statement对象。

BatchExecutor:执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同。

作用范围:Executor的这些特点,都严格限制在SqlSession生命周期范围内。


MyBatis将 #{…} 解释为JDBC prepared statement 的一个参数标记。而将 ${…} 解释为字符串替换。



你可能感兴趣的:(Mybatis框架)