从 SqlSessionFactory 中获取 SqlSession

既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:

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

诚然,这种方式能够正常工作,并且对于使用旧版本 MyBatis 的用户来说也比较熟悉。不过现在有了一种更简洁的方式 ——使用正确描述每个语句的参数和返回值的接口(比如 BlogMapper.class),你现在不仅可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。

例如:

  1. try (SqlSession session = sqlSessionFactory.openSession()) {
  2. BlogMapper mapper = session.getMapper(BlogMapper.class);
  3. Blog blog = mapper.selectBlog(101);
  4. }

现在我们来探究一下这里到底是怎么执行的。