前言
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。
MyBatis 的基础概念
- SqlSessionFactoryBuilder:
- 这个类可以被用来创建 SqlSessionFactory 的实例。
- SqlSessionFactoryBuilder 使用一个配置文件(通常是 MyBatis 的配置文件 mybatis-config.xml)来创建一个 SqlSessionFactory 实例。
- 一旦创建了 SqlSessionFactory,就不再需要 SqlSessionFactoryBuilder 了,因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。
- SqlSessionFactory:
- SqlSessionFactory 一旦被创建就应该在应用程序的整个生命周期中存在,没有任何理由丢弃它或重新创建另一个实例。
- SqlSessionFactory 是用来创建 SqlSession 的工厂。
- SqlSession:
- SqlSession 提供了在数据库执行命令所需的所有方法,比如:selectList、selectOne、insert、update、delete 等。
- SqlSession 是通过 SqlSessionFactory 实例获得的。
- SqlSession 在使用完毕后需要正确关闭,以释放其占用的 JDBC 资源。
- Mapper 接口:
- Mapper 接口是 MyBatis 的一个核心组件,它的作用是定义操作数据库的接口方法。
- Mapper 接口中的方法名通常与 XML 映射文件中定义的 SQL 语句的 id 相对应。
- MyBatis 通过动态代理机制,在运行时动态创建 Mapper 接口的代理对象,代理对象的方法调用会被转发到 MyBatis 的 SQL 映射执行器上执行。
MyBatis 的基本工作流程
- 加载 MyBatis 配置文件:
- 配置文件包含了数据库连接信息和 MyBatis 运行时所需的各种配置。
- 创建 SqlSessionFactory:
- 使用 MyBatis 配置文件中的信息,SqlSessionFactoryBuilder 会构建出 SqlSessionFactory 实例。
- 创建 SqlSession:
- 通过 SqlSessionFactory 实例可以创建 SqlSession 对象。
- 执行 SQL 语句:
- 有了 SqlSession 后,就可以使用它来执行定义在 Mapper 接口中的方法了。
- MyBatis 会将 Mapper 接口中的方法与 XML 映射文件中的 SQL 语句关联起来,并执行相应的 SQL 语句。
- 处理结果:
- SQL 语句执行完毕后,MyBatis 会将执行结果映射成 Java 对象,并返回给调用者。
- 关闭 SqlSession:
- 使用完毕后,需要关闭 SqlSession 以释放 JDBC 资源。
MyBatis 的优势
- 简单易学:MyBatis 相对于其他 ORM 框架来说,上手更简单,学习成本更低。
- 灵活:MyBatis 允许你编写几乎任何 SQL 语句,并且可以直接在 XML 映射文件中或通过注解来配置。
- 解除 SQL 与代码耦合:通过 Mapper 接口和 XML 映射文件,MyBatis 实现了 SQL 语句与 Java 代码的解耦。
- 性能优异:MyBatis 的底层是通过 JDBC 实现的,因此在性能上表现优异。
MyBatis 是 Java 开发中非常流行的一款持久层框架,它简化了数据库操作,提高了开发效率,是 Java 开发者在进行数据库编程时的一个好选择。