執行流程
- 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());
}