Mybatis-Plus的SQL语句组拼原理

前言:记录查找自动组拼SQL语句的过程

首先在BaseMapper其中的一个方法下打个断点

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

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

 

 

 

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

发现是AutoSqlInjector创建了MappedStatement

在AutoSqlInjector对象找到与selectById相关的一个方法,打断点

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

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

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

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

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

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

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值