MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 遵循约定优于配置( Convention Over Configuration)的原则,这意味着大多数情况下,你只需要提供简单的 XML 配置或注解,MyBatis 就能自动为你完成很多工作。这使得 MyBatis 成为初学者和专家都非常喜欢的框架。
MyBatis 原理
核心组件
- SqlSession: MyBatis 的核心接口,它封装了所有执行 SQL 命令、管理事务、获取映射器等方法。
- Executor: MyBatis 的执行器,负责执行 SQL 命令并返回结果。
- MappedStatement: 表示一个映射语句,包含 SQL 语句和参数映射。
- SqlSource: 表示一个 SQL 语句源,可以是 XML 中的
<select>标签或注解。 - ParameterMap: 表示一个参数映射,包含参数名称和参数类型。
工作流程
- 构建 SqlSession: 通过 MyBatis 的配置文件或注解创建一个 SqlSession。
- 获取 Mapper: 从 SqlSession 中获取对应的 Mapper 接口。
- 执行 SQL: 通过 Mapper 接口调用方法,MyBatis 会根据 Mapper 的 XML 或注解找到对应的 MappedStatement。
- 执行 SQL: Executor 会执行 MappedStatement 中的 SQL 语句,并将结果返回给调用者。
MyBatis 实战
创建项目
- 选择合适的 IDE: 如 IntelliJ IDEA 或 Eclipse。
- 创建 Maven 项目: 在 pom.xml 中添加 MyBatis 和数据库驱动的依赖。
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
配置 MyBatis
- 创建配置文件: 创建
mybatis-config.xml文件,配置数据库连接、事务管理、映射文件等。 - 创建映射文件: 创建
UserMapper.xml文件,定义 SQL 语句和结果映射。
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUser" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
编写 Mapper 接口
public interface UserMapper {
User selectUser(Integer id);
}
使用 MyBatis
- 创建 SqlSessionFactory: 通过配置文件或注解创建一个 SqlSessionFactory。
- 创建 SqlSession: 通过 SqlSessionFactory 创建一个 SqlSession。
- 获取 Mapper: 从 SqlSession 中获取对应的 Mapper 接口。
- 执行 SQL: 通过 Mapper 接口调用方法,执行 SQL 语句。
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsInputStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.selectUser(1);
sqlSession.close();
总结
通过本文的介绍,相信你已经对 MyBatis 有了一定的了解。MyBatis 是一个功能强大、易于使用的框架,可以帮助你快速开发 Java 应用程序。希望本文能帮助你轻松入门 MyBatis,并在实际项目中发挥其优势。
