美文网首页技术干货
MyBatis 从初始化到sql执行全流程行进

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

作者: 一路摇到顶 | 来源:发表于2018-04-15 16:55 被阅读38次

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。


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: 对结果集进行封装

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执行流程。


sqlsession_getMapper_run.png

相关文章

网友评论

    本文标题:MyBatis 从初始化到sql执行全流程行进

    本文链接:https://www.haomeiwen.com/subject/wbjomxtx.html