一、什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
官方网站资源:
-
GitHub 仓库:https://github.com/mybatis/mybatis-3
二、为什么要使用 MyBatis?(解决 JDBC 的问题)
2.1 JDBC 的缺点:
-
数据库连接硬编码 - 每次都需要手动创建连接
-
SQL 语句硬编码 - SQL 写在 Java 代码中,不易维护
-
参数手动设置 - 需要手动设置 PreparedStatement 参数
-
结果集手动封装 - 需要遍历 ResultSet 手动封装对象
-
资源手动关闭 - 需要手动关闭 Connection、Statement、ResultSet
2.2 MyBatis 的解决方案:
-
配置文件管理 - 将数据库配置提取到 XML 文件中
-
SQL 与代码分离 - SQL 写在 XML 映射文件中
-
参数自动映射 - 自动将 Java 对象属性映射到 SQL 参数
-
结果集自动封装 - 自动将查询结果封装为 Java 对象
-
资源自动管理 - 自动管理数据库连接的开启和关闭
三、核心概念解析
3.1 持久层
持久层是软件架构中的一个概念,主要负责将数据保存到数据库或从数据库中读取数据。MyBatis 就是一个持久层框架,它封装了数据访问的细节,让开发者可以更专注于业务逻辑的实现。
3.2 执行流程(简单理解)
text
配置文件加载 → SqlSessionFactory 创建 → SqlSession 获取 → 执行 SQL → 返回结果
四、MyBatis 快速入门
4.1 如何获取 MyBatis
MyBatis 提供了三种主要获取途径:
途径一:Maven 依赖(推荐)
XML
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
途径二:Gradle 依赖
Groovy
implementation 'org.mybatis:mybatis:3.5.10'
途径三:直接下载 JAR 包
从官网下载地址:https://github.com/mybatis/mybatis-3/releases
4.2 快速入门步骤
第一步:创建核心配置文件(mybatis-config.xml)
XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 映射文件配置 -->
</mappers>
</configuration>
第二步:创建实体类
java
public class User {
private Integer id;
private String name;
private Integer age;
// 构造方法、getter、setter 省略
}
第三步:创建映射文件(UserMapper.xml)
第四步:Java 代码中使用
java
// 1. 读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 2. 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
// 3. 获取 SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
// 4. 执行 SQL
User user = session.selectOne("com.example.mapper.UserMapper.selectUser", 1);
System.out.println(user);
}
五、学习建议
对于初学者,建议按照以下顺序学习:
-
先掌握基本配置和简单 CRUD 操作
-
理解参数传递和结果映射
-
学习动态 SQL 的使用
-
掌握关联查询和复杂映射
-
最后学习缓存、插件等高级特性
通过 MyBatis,我们可以将原来繁琐的 JDBC 操作简化为配置文件和简单的接口调用,大大提高了开发效率。后续将深入讲解映射文件配置、动态 SQL、结果集映射等更详细的内容。