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 中
转载于:https://www.cnblogs.com/skyislimit/p/10444918.html
Mybatis Plus启动注入 SQL 原理分析相关推荐
- MP 启动注入 SQL 原理分析
MP 启动注入 SQL 原理分析 文章目录 一.MybatisPlus需要sql语句吗? 解答:需要 1.1. 问题:为什么MybatisPlus看不到sql语句? 1.2. 分析:继承关系 1.3. ...
- 第 3 章 MybatisPlus 注入 SQL 原理分析
第 3 章 MybatisPlus 注入 SQL 原理分析 思考问题 我们编写的 UserMapper 继承了 BaseMapper<T>,就拥有了基本的增删改查功能,这是因为 BaseM ...
- web安全入门(第四章-1)SQL注入的原理分析
1.SQL注入本质 注入攻击的本质,是把用户输入的数据当作代码执行这有两个条件: 第一个是用户能够控制输入 第二个是原本程序要执行的代码,拼接里用户输入的数据然后执行sql注入就是针对sql语句的注入 ...
- Mybatis解析动态sql原理分析
前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...
- sql注入的原理分析
1.知识点一:什么是sql注入? 用户输入的内容被网站当做数据库语句进行执行.关键点:输入的内容 一定要是[数据库语句]. 用户输入的内容: 我们输入的内容. 在一个网站上能够输入的地方: 1 ...
- MyBatis处理多参数及原理分析
一.多参数处理方式 1.1使用@Param注解 MyBatis 允许在mapper 接口中使用@Param注解来处理多个参数. mapper 接口: /** @Param 注解中的值可以是任意的 */ ...
- Mybatis3.4.x技术内幕(二十二):Mybatis一级、二级缓存原理分析
2019独角兽企业重金招聘Python工程师标准>>> Mybatis的一级缓存,指的是SqlSession级别的缓存,默认开启:Mybatis的二级缓存,指的是SqlSession ...
- springiocxml方式注入对象原理分析
尤其是注解版本,都看懂了没有,你们最好都建立maven工程,不要建单独的java项目,这个项目建好了之后说一下,直接把pom文件copy过来,pom文件里面不是有依赖信息吗,你们都不要去写了,写比较浪 ...
- MyBatis 动态 SQL 底层原理分析
MyBatis 动态 SQL 底层原理分析 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" p ...
最新文章
- cisco+路由器+固定外网IP与NAT+设置
- Spring干货汇总(含Spring Boot与Spring Cloud)
- 计算机组成原理——总线结构
- 【转】手工导入传输请求(Transport Request)
- lipo 制作通用版本 静态库
- java IO(输入输出) 对象的序列化和反序列化
- 利用有序节点来实现分布式锁
- php ssc 源码_吃透这篇,你也能搭建出一个高并发和高性能的系统
- python3循环一直到一个值结束_一步一步学Python3(小学生也适用) 第十七篇:循环语句for in循环...
- mysql state_MySQL进程常见的State【转】
- libpcap 编程入门资源
- 【LeetCode】【字符串】题号:*58. 最后一个单词的长度
- 产品配件类目税目分类_终于找到了!“税收分类编码大全”,有这一篇就够了!...
- 【CS229机器学习】作业 Problem Set #1 有监督学习
- 指数函数中x的取值范围_指数函数x的取值范围是
- 如何通过个人博客赚钱,走上财务自由?
- 彼得林奇的成功投资 (修订版)
- 大内高手 常见内存错误
- 北京三日自驾游-和狗狗的秦皇岛之旅
- 数据集大小与模型性能的敏感性分析
热门文章
- python stackless_Stackless Python的缺点是什么?
- jdbc mysql 存储过程执行失败_JDBC连接执行MySQL存储过程报空指针或权限错误
- es6 取数组的第一个和最后一个_全球最恐怖的3个泳池,第一个有10层楼高,最后一个听名字就害怕...
- pytorch torch.unsqueeze
- C语言 指针与数组
- flask-前端-requests之response对应关系 text
- 数据算法之快速排序(quickSort)的Java实现
- spark java foreach_Spark Java使用DataFrame的foreach/foreachPartition
- 关于“想哭”病毒,我也来两句。--转载
- Linux学习总结(46)——Centos7.4设置开机自动登陆及网卡自动启用