从 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. }

现在我们来探究一下这段代码究竟做了些什么。