zoukankan      html  css  js  c++  java
  • Mybatis Plus启动注入 SQL 原理分析

    1) 问题: xxxMapper 继承了 BaseMapper<T>, BaseMapper 中提供了通用的 CRUD 方法,     

     方法来源于 BaseMapper, 有方法就必须有 SQL, 因为 MyBatis 最终还是需要通过      SQL 语句操作数据.   

    前置知识:MyBatis 源码中比较重要的一些对象, MyBatis 框架的执行流程   Configuration     MappedStatement   ……..

    2) 通过现象看到本质

    A. employeeMapper 的本质  org.apache.ibatis.binding.MapperProxy

    B. MapperProxy 中 sqlSession –>SqlSessionFactory 

    C. SqlSessionFacotry 中 → Configuration→ MappedStatements 每一个 mappedStatement 都表示 Mapper 接口中的一个方法与 Mapper 映射文件 中的一个 SQL。

    MP 在启动就会挨个分析 xxxMapper 中的方法,并且将对应的 SQL 语句处理好,保 存到 configuration 对象中的 mappedStatements 中.

    D. 本质: 

    Configuration: MyBatis 或者 MP 全局配置对象

    MappedStatement:一个 MappedStatement 对象对应 Mapper 配置文件中的一个 select/update/insert/delete 节点,主要描述的是一条 SQL 语句

    SqlMethod : 枚举对象 ,MP 支持的 SQL 方法

    TableInfo:数据库表反射信息 ,可以获取到数据库表相关的信息

    SqlSource: SQL 语句处理对象

    MapperBuilderAssistant: 用于缓存、SQL 参数、查询方剂结果集处理等. 通过 MapperBuilderAssistant 将每一个 mappedStatement 添加到 configuration 中的 mappedstatements 中

     

  • 相关阅读:
    Nodejs服务器搭建
    CRC8校验,生成多项式:X8 + X2 + X + 1
    windows server 2019添加开机启动项
    Ubuntu20.04下SSH2安装, gulp live报错解决
    Ubuntu 20.04 开机执行自定义脚本
    STUN/TURN服务器搭建
    PostgreSQL开启远程连接
    Ubuntu 20.04 开机执行自定义脚本
    CentOS下 rpm软件包的安装与卸载
    Ubuntu18.04安装JDK1.8.0_11
  • 原文地址:https://www.cnblogs.com/skyislimit/p/10444918.html
Copyright © 2011-2022 走看看