MyBatis(3)核心组件

MyBatis 是一个半自动的 ORM(Object Relational Mapping)框架,它主要的核心组件包括:

  1. SqlSessionFactoryBuilder:这个类可以根据配置文件或者配置实例来构建 SqlSessionFactory

  2. SqlSessionFactory:一旦被创建,它应该在你的应用执行期间一直存在,没有理由丢弃它或者重新创建另一个实例。它的最佳范围是应用范围。最简单的就是使用单例模式或者更简单的,作为一个应用范围的属性。

  3. SqlSession:每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的范围是请求或方法范围。绝对不能将 SqlSession 实例的引用放在一种类似于静态字段甚至是类实例字段的变量中。也绝不能将 SqlSession 实例的引用放在任何类型的管理范围中,比如 Servlet 架构中的 HttpSession

  4. Executor:MyBatis 的执行器是一个很重要的概念,它是负责执行低级别的 SQL 操作的内部对象,是 MyBatis 的核心组件之一。

  5. Mapper Interface:这些接口是由用户定义的,它们包含了方法,这些方法可以对数据库进行操作。MyBatis 会根据 XML 文件或注解自动生成 Mapper 接口的实现。

  6. XML Mapper:这个文件包含了一系列的 SQL 映射语句,可以使用 XML 标签来书写动态 SQL。

  7. Mapped Statements:在 MyBatis 中,每一个 <select>, <insert>, <update>, <delete> 标签,以及对应的注解,都会被解析成一个 Mapped Statement 对象。

  8. SqlSource:每个 Mapped Statement 都会有一个 SqlSource,它用来产生 BoundSql 对象,这个对象包含了最终要执行的 SQL 语句和相关的参数信息。

  9. ResultMaps:这是一个描述如何从数据库结果集中来加载对象的映射器。

  10. Type Handlers:在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时,MyBatis 会使用类型处理器将获取的值转换为 Java 类型。

  11. Cache:MyBatis 中的缓存,包括一级缓存(SqlSession 级别的缓存)和二级缓存(映射器级别的缓存)。

现在,让我们看一个基本的 MyBatis 设置代码示例。

// 1. SqlSessionFactoryBuilder
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

// 2. SqlSessionFactory
try (SqlSession session = sqlSessionFactory.openSession()) {

    // 3. SqlSession
    // 5. Mapper Interface
    BlogMapper mapper = session.getMapper(BlogMapper.class);
    Blog blog = mapper.selectBlog(101);
    System.out.println(blog.getTitle());

    // 4. Executor
    // 此时,MyBatis 的内部 Executor 将负责执行 SQL 语句并返回结果。

} catch (IOException e) {
    // Exception handling
}

这里,请注意:

  • 配置文件 mybatis-config.xml 包含了 MyBatis 的配置信息。
  • Mapper 接口 BlogMapper 会有一个相应的 XML 文件或者注解来定义 SQL 映射。
  • 在调用 mapper.selectBlog(101) 方法时,MyBatis 会转换这个调用为相应的 SQL 语句执行。

MyBatis 的实现细节和优化技术主要植根于它的动态 SQL 解析,参数映射,结果映射,缓存策略等方面。通过对这些关键组件的深入理解,开发者可以更高效地使用 MyBatis,并且在必要时可以对其进行扩展。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辞暮尔尔-烟火年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值