Mybatis架构设计

Mybaits功能架构设计

将Mybatis的功能架构分为三层:

API接口层

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

在Mybatis中,交互分为两种方式:

  • Mybatis提供的API
    使用Mybatis提供的API进行操作,通过获取SqlSession对象,然后根据Statement Id 和参数来操作数据库。
    String statement = "com.xx.dao.UserMapper.getUserList";
    List<User> result = sqlsession.selectList(statement); 
    
  • 使用Mapper接口
    这也是经常使用的方式,面向接口编程每一个Mapper接口中的方法对应着mapper.xml文件中的一个select/insert/update/delete节点。节点中的ID就是接口中的方法名,在使用的时候直接调用接口方法即可。不过,值得注意的是,它最终执行的还是sqlSession.select()、sqlSession.delete()。
    public interface UserMapper {
      
      //userMappper.findUser(1);
      User findUser(int id);
    
    }
    

数据处理层

这是Mybatis的核心。负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。关于参数映射和结果集转换,主要是靠typeHandlers

基础支撑层

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

MyBatis层次结构

构件 描述
SqlSession 作为Mybatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
Executor Mybatis执行器,是Mybatis调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler 封装了JDBC Statement操作,负责对JDBC statement的操作,如设置参数、将Statement结果集转换成List集合
ParameterHandler 负责对用户传递的参数转换成JDBC Statement所需要的参数
ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
TypeHandler 负责Java数据类型和jdbc数据类型之间的映射和转换
NaooedStatement MappedStatement维护了一条<select | update | delete | insert>节点的封装
SqlSource 负责根据用户传递的parameterObject,动态的生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql 表示动态生成的SQL语句以及相应的参数信息
Configuration Mybatis所有的配置信息都维护在此对象之中
posted @ 2022-02-24 20:11  城南孔乙己  阅读(94)  评论(0)    收藏  举报