1.SqlSessionFactory(SQL 会话工厂)
SqlSessionFactory
是 MyBatis 中最核心的组件之一。它的作用是创建SqlSession
实例。由于SqlSessionFactory
是线程安全的,通常在应用程序中只需要创建一个实例,并在整个应用程序中复用。- 创建
SqlSessionFactory
需要一个配置文件或配置信息,这通常通过SqlSessionFactoryBuilder
来完成。
SqlSessionFactory
是一家餐厅的中央厨房,负责准备和提供所有必需的食材和工具。在 MyBatis 中,它根据配置文件创建SqlSession
实例,就像厨房根据菜单准备食材一样。
2.SqlSession(SQL 会话)
SqlSession
是 MyBatis 中执行持久化操作的核心对象。每个线程都应该有自己的SqlSession
实例,且该实例不应该被共享。它封装了 Executor,可以直接执行映射的 SQL 语句。SqlSession
提供了多种方法来执行操作,如selectOne
、selectList
、insert
、update
和delete
等。- 使用完毕后,应该关闭
SqlSession
以释放数据库连接资源。在 Java 7 及以上版本,可以使用 try-with-resources 语句自动关闭。
SqlSession
就像是一位厨师,负责实际的烹饪工作。每位顾客(线程)都有自己的厨师,以确保每个人的需求都能得到满足。厨师使用厨房提供的工具和食材来制作菜肴。
3.Mapper(映射器)
- Mapper 是 MyBatis 中用于定义 SQL 映射的接口。开发者通过在接口中定义方法来声明需要执行的数据库操作,然后在 XML 文件或使用注解的方式指定这些方法对应的 SQL 语句。
- Mapper 接口不需要实现类,MyBatis 会在运行时通过动态代理机制自动创建一个实现了该接口的代理类,代理类中的方法会委托给
SqlSession
来执行相应的 SQL。
Mapper 接口就像餐厅的菜单,列出了所有顾客可以点的菜肴(数据库操作)。厨师(
SqlSession
)根据菜单(Mapper 接口)上的指示来烹饪特定的菜肴。
4.Configuration(配置)
Configuration
类是 MyBatis 配置信息的容器,它包含了 MyBatis 的所有配置信息,如数据库连接信息、映射器、缓存配置等。- 这个类是不可变的,并且在创建
SqlSessionFactory
时被加载。
Configuration
类似于一本详细的食谱书,包含了制作每道菜所需的所有信息,比如食材、烹饪步骤、火候等。在 MyBatis 中,它包含了所有配置信息。
5.ResultMap(结果映射)
ResultMap
是 MyBatis 中定义 SQL 查询结果和 Java 对象之间映射的组件。它允许开发者指定如何将数据库查询结果转换为 Java 对象。
6.ParameterMap(参数映射)
ParameterMap
类似于ResultMap
,但它用于定义如何将 Java 对象转换为 SQL 语句的参数。
ResultMap
和ParameterMap
就像是一本食材转换指南,告诉厨师如何将原材料(数据库列)转换成顾客可以享用的菜肴(Java 对象),反之亦然。