MyBatis 从初始化到sql执行全流程行进

sqlsession的由来

Mybatis 对外使用SqlSession进行交互,SqlSession是mybatis的核心。

SqlSessionFactory

SqlSessionFactory使用生成SqlSession的工厂。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSessionFactoryBuilder 读取 Mybatis 配置文件,构建Configuration,做为参数构建SqlSessionFactory。


MyBatis 从初始化到sql执行全流程行进_第1张图片
sqlsessionfactory_create.png

SqlSession

SqlSession session = sqlSessionFactory.openSession();
try {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
  session.close();
}

SqlSession 通过手下的四大对象完成一次sql执行操作
Executor: 执行器,调度使用后面三个对象,执行sql
StatementHanlder: 与数据库交互的对象,获取数据库链接,组织sql,执行sql
ParameterHandler: 对sql中的参数进行设置
ResultHandler: 对结果集进行封装

MyBatis 从初始化到sql执行全流程行进_第2张图片
sqlsession_run.png

通过Mapper类进行SQL的执行

SqlSession session = sqlSessionFactory.openSession();
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
} finally {
  session.close();
}

Mapper通过一层层的动态代理,最后执行SqlSession的sql执行流程。


MyBatis 从初始化到sql执行全流程行进_第3张图片
sqlsession_getMapper_run.png

你可能感兴趣的:(MyBatis 从初始化到sql执行全流程行进)