type
status
date
slug
summary
tags
category
icon
password
Property
Sep 5, 2023 01:09 PM
其实很早就想写一篇 iBatis 的源码分析了, 不过有段时间去学习 Go 了, Java 就放下了, 最近
重新捡起 Java 就把以前没填的坑,填一下.
Init
现在开始正片.
首先是 iBatis 的初始化工作.我们看下面的代码:
好, 上文有说
configuration.addMapper(BlogMapper.class)
这个方法, 现在我们来分析一下它.SqlSessionFactory
既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
好! 我们快进到曹丕sqlSessionFactory.openSession()
这样我们就得到了一个
SqlSession
.2020.10.12 继续更新
有了
SqlSession
之后我们就可以操作数据库了。我们来看看MyBatis是怎么实现
session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
的。以上是
SqlSession.selectOne
的流程。然而实际中我们直接使用SqlSession来执行数据库操作的情况很少。大多数情况我们会这样使用MyBatis:
这个方法的详细过程我们使用MyBatis的单元测试来探索。
单元测试代码:
快进到
session.getMapper
实际上生产Mapper的逻辑并不多。
主要是执行代理方法时的动作。
执行
mapper.selectBlogWithPostsUsingSubSelect(1);
的逻辑如下:下面就是整个代理的执行数据库操作的逻辑,比较长:
OK, 我基本想说的都说完了。后续可能会额外补充一些内容,但是不会在本文中,会写新文章。
- 作者:sdttttt
- 链接:https://www.sdttttt.site/article/75d6e014-fdf2-4a36-ab86-d17472fe0928
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。