前言:记录查找自动组拼SQL语句的过程
首先在BaseMapper其中的一个方法下打个断点

在断点显示的值栏找到相关的SQL

发现SQL语句在MappedStatement对象中,而sqlSource存的就是相关的sql语句


然后在MappedStatement这个对象打断点,看看到底是哪个对象对它进行了操作

发现是AutoSqlInjector创建了MappedStatement
在AutoSqlInjector对象找到与selectById相关的一个方法,打断点

SqlSource果然在这里创建出来了,createSqlSource就是具体过程,然后添加到MappedStatement对象中,此SQL完成组拼

在createSqlSource方法打下断点,进入具体的组拼过程

方法sqlSelectColumns就是具体的组拼方法,一直在此方法进行递归

在此方法中,迭代器在不断迭代组拼

最后SQL全部完成组拼,存在集合对象中,就可以取出来了

总结:学会从逆推到顺推,学会怎样打断点是关键

Mybatis-Plus的SQL语句组拼原理相关推荐

  1. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  2. mybatis直接执行sql语句后续之一

    在上一篇文章中,我们提到了让mybatis直接执行sql语句. http://xiabin1235910-qq-com.iteye.com/blog/1748886 接下来介绍在上一篇文章的基础上,我 ...

  3. java day55【 Mybatis 连接池与事务深入 、 Mybatis 的动态 SQL 语句、 Mybatis 多表查询之一对多 、 Mybatis 多表查询之多对多】...

    第1章 Mybatis 连接池与事务深入 1.1 Mybatis 的连接池技术 1.1.1 Mybatis 连接池的分类 1.1.2 Mybatis 中数据源的配置 1.1.3 Mybatis 中 D ...

  4. mybatis查询时间段sql语句和DATE_FORMAT

    1.mysql 格式化日期 DATE_FORMAT,FROM_UNIXTIME,UNIX_TIME等  DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. Sql代码   DATE_ ...

  5. Mybatis.xml中sql语句的转译

    Mybatis.xml中sql语句的转译

  6. MyBatis 如何防止SQL注入 —— 底层原理

    一.SQL注入 SQL注入是在Web页面的查询入口传入SQL非法参数,在事先定义好的查询语句的结尾上添加额外的SQL语句,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器执行,威胁数据库 ...

  7. Mybatis如何打印sql语句

    1.SpringMVC集成mybatis配置 首先,添加mybatis的配置文件mybatis-config.xml,可以原样复制 <?xml version="1.0" e ...

  8. mysql查阅某个日期的语句_mysql查询指定日期时间内的sql语句及原理

    查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...

  9. mybatis实现动态sql语句

    [注意点] choose与if区别,只取第一个符合条件password并没有进入sql语句中 //[请注意]增删改必须提交事务................. 在批量更新中需要将deconfig的配 ...

最新文章

  1. WIN7服务优化,别关太多,小心启动不
  2. java读取系统中指定的文件_java读取jar中指定的文件
  3. ML+DM顶会时间(2020)
  4. 机器学习算法加强——SVM(支持向量机)
  5. 绝地求闪退be服务器未运行,绝地求生大逃杀BE启动失败,应用程序无法正常启动...
  6. python进阶之多进程
  7. Java中的out.write()和out.print()的区别
  8. 攻防比赛_2020年度泉州市大学生网络安全攻防比赛在黎明职业大学圆满落幕
  9. jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准
  10. 集字卡v4.3.4微信公众号原版三种UI+关键字卡控制+支持强制关注
  11. 算法学习笔记 全源最短路径Johnson算法(用于稀疏图和有负边的图)
  12. VUX 移动前端框架使用文档
  13. PC端网页布局——世纪佳缘(四)注册登录
  14. 华为鸿蒙即兴评述,华为的理性,鸿蒙的节奏
  15. 检测网络不通时自动重启计算机,电脑连不上网怎么办?6个最简单最实用的解决办法,帮你轻松搞定!...
  16. 一起实践神经网络INT8量化系列教程(一)
  17. This relative module was not found: * ./components/goods/Cate.vue in ./src/router.js
  18. CAD二次开发之LISP读取excel数据
  19. 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题
  20. SAP中通过生产版本有效期控制物料生产入库分析测试

热门文章

  1. 从平庸到杰出,技术人应该专注的底层知识是什么?
  2. 华为任正非推荐学习的博士PPT《认识5G,发展5G》
  3. 深度学习浪潮过后,计算机视觉将走向何方
  4. java中main方法返回类型是6_[单选] Java application中的主类需包含main方法,main方法的返回类型是什么()。...
  5. (python numpy) np.array.shape 中 (3,)、(3,1)、(1,3)的区别
  6. lucene分布式索引
  7. TDA-04D8变送器数据上报阿里云
  8. 致敬 hacker |盘点内存虚拟化探索之路
  9. 基于X-Engine引擎的实时历史数据库解决方案揭秘
  10. Istio 网关之南北向流量管理