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

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

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

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

 

 

 

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

发现是AutoSqlInjector创建了MappedStatement

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

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

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

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

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

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

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

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐