执行流程
- MapperRegistry#addMapper
- MapperRegistry#getMapper
- MapperProxyFactory#newInstance
- MapperProxy#invoke
- MapperMethod#execute
- DefaultSqlSession#selectOne
- DefaultSqlSession#selectList
- BaseExecutor#query
- MappedStatement#getBoundSql
- DynamicSqlSource#getBoundSql
- SqlSourceBuilder#parse
作用
1、将"#{xxx}“替换为占位符”?"
2、将占位符"?"对应的属性信息放到SqlSourceBuilder.ParameterMappingTokenHandler的parameterMappings集合中
3、构建StaticSqlSource,StaticSqlSource含有sql,parameterMappings,configuration
核心方法
public SqlSource parse(String originalSql, Class<?> parameterType, Map<String, Object> additionalParameters) {
ParameterMappingTokenHandler handler = new ParameterMappingTokenHandler(configuration, parameterType, additionalParameters);
GenericTokenParser parser = new GenericTokenParser("#{", "}", handler);
String sql = parser.parse(originalSql);
return new StaticSqlSource(configuration, sql, handler.getParameterMappings());
}
本文详细解析了MyBatis的执行流程,包括MapperRegistry、MapperProxyFactory、MapperProxy等关键组件的作用,以及如何通过SqlSourceBuilder处理动态SQL,实现参数绑定和SQL预编译。
1102

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



