- 加载并初始化 将配置核心文件sqlMapConfigx.xml 和mapper.xml,以及注解的配置加载进内存,使用sqlSessionFactoryBuilder.build(xx),来解析配置,并封装成Configuration中,sql信息封装入mappedstatment中
- 执行sql,用factory.openSession 获取sqlSession,sqlSession执行查询后,sqlSession将任务委派给Executor,Executor负责缓存的维护,Executor将任务委派给statementHandler,而statementHandler才是真正封装jdbc并执行,statementHandler会调用ParameterHandler来设置参数,而返回的结果又由ResultSetHandler封装返回。
源码分析:
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List<Object> objects = sqlSession.selectList("statement.id");
第一步:InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
其实就是调用ClassLoader.getResourceAsStream(resource)
第二步:SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
封装到Configuration中,sql信息封装入mappedstatment中,并返回DefaultSqlSessionFactory(config)
第三步:SqlSession sqlSession = sqlSessionFactory.openSession();
第四步:查询