0%

mybatis详细执行过程

mybatis详细执行过程

下面结合源码来分析一下mybatis的详细执行过程,mybatis的源码在流行的框架中写的还是比较简单且清晰的,可以作为研究框架源码的一个敲门砖,以此来建立一下研究源码的信心。

  • 待整理

    执行过程

总结:

  • 根据配置文件(全局配置文件和映射文件)来初始化生成Configuration对象
  • 创建一个DefaultSqlSession对象,包含有Configuration以及Executor(根据配置文件中的defaultExecutorType来创建对应的Executor)
  • DefaultSqlSession.getMapper(),拿到Mapper接口对应的MapperProxy(jdk动态代理)
  • MapperProxy里面有DefaultSqlSession
  • 执行增删改查方法:
    • 调用DefaultSqlSession的增删改查方法(里面使用的是Executor的对应方法)
    • 会创建一个StatementHandler对象(使用数据库的Statement或PrepareStatement执行操作,启承上启下作用),ParameterHandler对象(对预编译的SQL语句进行参数设置,SQL语句中的的占位符“?”都对应BoundSql.parameterMappings集合中的一个元素,在该对象中记录了对应的参数名称以及该参数的相关属性)和ResultSetHandler对象(对数据库返回的结果集ResultSet进行封装,返回用户指定的实体类型)
    • 调用StatementHandler的预编译参数以及ParameterHandler对象参数设置,在调用增删改查方法
    • 使用ResultSetHandler封装结果

欢迎关注我的其它发布渠道