MyBatis 层次结构
mybaits SQL生成和拼接
org.apache.ibatis.builder.StaticSqlSource#getBoundSql => return new BoundSql(configuration, sql, parameterMappings, parameterObject);
org.apache.ibatis.scripting.defaults.RawSqlSource#getBoundSql => return sqlSource.getBoundSql(parameterObject);
org.apache.ibatis.mapping.MappedStatement#getBoundSql => BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
org.apache.ibatis.executor.CachingExecutor#query => BoundSql boundSql = ms.getBoundSql(parameterObject);
org.apache.ibatis.session.defaults.DefaultSqlSession#selectList => return executor.query(ms, wrapCollection(parameter), rowBounds, Executor.NO_RESULT_HANDLER);
org.mybatis.spring.SqlSessionTemplate#selectList => return this.sqlSessionProxy.selectList(statement, parameter);
org.apache.ibatis.binding.MapperMethod#executeForMany => result = sqlSession.selectList(command.getName(), param);
org.apache.ibatis.binding.MapperMethod#execute => switch (command.getType()) { case SELECT: result = executeForMany(sqlSession, args);
org.apache.ibatis.binding.MapperProxy#invoke => return mapperMethod.execute(sqlSession, args);