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 中

转载于:https://www.cnblogs.com/skyislimit/p/10444918.html

Mybatis Plus启动注入 SQL 原理分析相关推荐

  1. MP 启动注入 SQL 原理分析

    MP 启动注入 SQL 原理分析 文章目录 一.MybatisPlus需要sql语句吗? 解答:需要 1.1. 问题:为什么MybatisPlus看不到sql语句? 1.2. 分析:继承关系 1.3. ...

  2. 第 3 章 MybatisPlus 注入 SQL 原理分析

    第 3 章 MybatisPlus 注入 SQL 原理分析 思考问题 我们编写的 UserMapper 继承了 BaseMapper<T>,就拥有了基本的增删改查功能,这是因为 BaseM ...

  3. web安全入门(第四章-1)SQL注入的原理分析

    1.SQL注入本质 注入攻击的本质,是把用户输入的数据当作代码执行这有两个条件: 第一个是用户能够控制输入 第二个是原本程序要执行的代码,拼接里用户输入的数据然后执行sql注入就是针对sql语句的注入 ...

  4. Mybatis解析动态sql原理分析

    前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...

  5. sql注入的原理分析

    1.知识点一:什么是sql注入? 用户输入的内容被网站当做数据库语句进行执行.关键点:输入的内容 一定要是[数据库语句]. 用户输入的内容: 我们输入的内容. 在一个网站上能够输入的地方:     1 ...

  6. MyBatis处理多参数及原理分析

    一.多参数处理方式 1.1使用@Param注解 MyBatis 允许在mapper 接口中使用@Param注解来处理多个参数. mapper 接口: /** @Param 注解中的值可以是任意的 */ ...

  7. Mybatis3.4.x技术内幕(二十二):Mybatis一级、二级缓存原理分析

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis的一级缓存,指的是SqlSession级别的缓存,默认开启:Mybatis的二级缓存,指的是SqlSession ...

  8. springiocxml方式注入对象原理分析

    尤其是注解版本,都看懂了没有,你们最好都建立maven工程,不要建单独的java项目,这个项目建好了之后说一下,直接把pom文件copy过来,pom文件里面不是有依赖信息吗,你们都不要去写了,写比较浪 ...

  9. MyBatis 动态 SQL 底层原理分析

    MyBatis 动态 SQL 底层原理分析 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" p ...

最新文章

  1. cisco+路由器+固定外网IP与NAT+设置
  2. Spring干货汇总(含Spring Boot与Spring Cloud)
  3. 计算机组成原理——总线结构
  4. 【转】手工导入传输请求(Transport Request)
  5. lipo 制作通用版本 静态库
  6. java IO(输入输出) 对象的序列化和反序列化
  7. 利用有序节点来实现分布式锁
  8. php ssc 源码_吃透这篇,你也能搭建出一个高并发和高性能的系统
  9. python3循环一直到一个值结束_一步一步学Python3(小学生也适用) 第十七篇:循环语句for in循环...
  10. mysql state_MySQL进程常见的State【转】
  11. libpcap 编程入门资源
  12. 【LeetCode】【字符串】题号:*58. 最后一个单词的长度
  13. 产品配件类目税目分类_终于找到了!“税收分类编码大全”,有这一篇就够了!...
  14. 【CS229机器学习】作业 Problem Set #1 有监督学习
  15. 指数函数中x的取值范围_指数函数x的取值范围是
  16. 如何通过个人博客赚钱,走上财务自由?
  17. 彼得林奇的成功投资 (修订版)
  18. 大内高手 常见内存错误
  19. 北京三日自驾游-和狗狗的秦皇岛之旅
  20. 数据集大小与模型性能的敏感性分析

热门文章

  1. python stackless_Stackless Python的缺点是什么?
  2. jdbc mysql 存储过程执行失败_JDBC连接执行MySQL存储过程报空指针或权限错误
  3. es6 取数组的第一个和最后一个_全球最恐怖的3个泳池,第一个有10层楼高,最后一个听名字就害怕...
  4. pytorch torch.unsqueeze
  5. C语言 指针与数组
  6. flask-前端-requests之response对应关系 text
  7. 数据算法之快速排序(quickSort)的Java实现
  8. spark java foreach_Spark Java使用DataFrame的foreach/foreachPartition
  9. 关于“想哭”病毒,我也来两句。--转载
  10. Linux学习总结(46)——Centos7.4设置开机自动登陆及网卡自动启用