Mybatis中的源码
源码追踪:MapperProxyFactory–>MapperProxy–>cachedMapperMethod–>MapperMethod–>SqlCommand

ParamNameResolve类中

作用:处理返回值和参数
为什么要在参数前面加@Param
就是为了进行参数的处理

MapperProxy中执行的execute方法:

command.getType()是进行判断是哪个方法:
而对应相应的方法

mybatis动态代理手撕源码顺序
MapperProxyFactory–>Proxy.newProxyInstance()方法中–>MapperProxy–>invoke方法–>cachedMapperMethod()方法–>MapperMethod方法–>两个属性SqlCommand和Methodsignature–>两个属性name和SqlCommandType–>MethodSignature中的属性是返回值和参数(paramNameResolver)
execute是根据sql的类型进行执行方法(UNKNOWN, INSERT, UPDATE, DELETE, SELECT, FLUSH;枚举法)
SqlSession.insert
DefaultSqlSession
Executor
StatementHandler
SqlSession.update
SqlSession.selectOne()
SqlSession.Delete()
本文详细解读Mybatis中MapperProxy的执行过程,涉及ParamNameResolve的作用、参数前@Param的用途,以及如何通过SqlSession调用不同操作(insert、update、select等)。
4886

被折叠的 条评论
为什么被折叠?



