Mybatis-Plus的SQL语句组拼原理

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

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

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

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

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

发现是AutoSqlInjector创建了MappedStatement

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

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

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

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

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

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

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

经验分享 程序员 微信小程序 职场和发展