MyBatis基础教程:Java持久层框架入门
一、开篇:MyBatis 是什么,用来做什么?

你可能听过一个词叫“后端开发”,它的工作之一是让应用程序和数据库进行交互。也就是说,程序需要把数据存进数据库,或者从数据库里读取数据。传统的做法是直接使用 JDBC(Java 数据库连接),但是写起来又多又复杂。
MyBatis 是一个 Java 的持久层框架,它的作用就是简化数据库操作。你可以把它看成是一个“桥梁”,让我们用更简单的方式与数据库打交道。
💡 MyBatis 的特点:
- 灵活控制 SQL 语句
- 不强制要求 ORM 映射(不像 Hibernate 那样封装太深)
- 更适合需要精细控制 SQL 的场景
现在,我们就来一步步了解并上手 MyBatis!
二、环境准备:搭建 MyBatis 开发环境

学习之前,你需要准备好以下开发环境:
1. 安装 JDK 和 IDE
- JDK(Java Development Kit)建议使用 JDK 8 或以上版本。
- 推荐使用 IDEA(IntelliJ IDEA) 或者 Eclipse 作为开发工具。
2. 安装 MySQL(或其他数据库)
这里我们以最常用的 MySQL 为例:
- 下载安装:MySQL官网
- 建议配合客户端工具如 Navicat 或 DBeaver 操作数据库会更方便。
创建一个测试数据库和表,例如:
CREATE DATABASE mybatis_demo;
USE mybatis_demo;
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100)
);
INSERT INTO user(name, email) VALUES('Tom', 'tom@example.com');
3. 创建 Maven 项目
推荐使用 Maven 管理依赖包。如果你使用的是 IntelliJ IDEA:
- 打开 IDEA → File → New Project → Maven → Next
- GroupId 输入公司或个人名,比如
com.example - ArtifactId 写项目名称,比如
mybatis-demo - Finish 创建项目
4. 添加 MyBatis 和 MySQL 依赖
打开 pom.xml 文件,添加如下内容:
<dependencies>
<!-- MyBatis 核心依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- MySQL JDBC 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
保存之后,Maven 会自动下载相关 jar 包。
三、核心概念:通俗解释关键知识点

在正式编程前,先理解几个 MyBatis 中的关键角色:
1. SqlSessionFactory(工厂)
可以理解为一个“工厂”,它能“制造”出与数据库对话的通道(SqlSession)。
2. SqlSession(会话)
相当于你打开了和数据库之间的聊天窗口,可以进行 CRUD(增删改查)操作。
3. Mapper(映射器)
就像一个翻译官,负责将 Java 对象和数据库表做对应。你可以通过接口定义方法,再通过 XML 或注解指定对应的 SQL 语句。
4. MyBatis 配置文件(mybatis-config.xml)
这是全局配置文件,告诉 MyBatis 怎么连接数据库、Mapper 文件放在哪等。
四、实战项目:跟着教程完成第一个 MyBatis 小项目

我们将做一个小功能:查询数据库中的用户信息,并输出到控制台。
第一步:创建 Java 实体类 User
在 src/main/java/com/example/mybatisdemo 目录下新建类 User.java:
public class User {
private int id;
private String name;
private String email;
// Getter 和 Setter 方法
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
第二步:编写 Mapper 接口
新建 UserMapper.java:
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
}
第三步:编写 Mapper XML 文件
在 resources 下新建目录结构 mapper,然后新建文件 UserMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisdemo.UserMapper">
<select id="getAllUsers" resultType="com.example.mybatisdemo.User">
SELECT * FROM user
</select>
</mapper>
其中 namespace 要和我们的接口完全一致,resultType 表示返回的数据要映射成哪个 Java 类。
第四步:配置 MyBatis 配置文件
在 resources 目录下新建 mybatis-config.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_demo?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
记得修改你的数据库用户名和密码。
第五步:编写主程序运行查询
新建 App.java:
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class App {
public static void main(String[] args) throws Exception {
// 读取 MyBatis 配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取 SqlSession,执行 SQL
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.getAllUsers();
for (User user : users) {
System.out.println(user);
}
}
}
}
运行这个程序,如果一切正常,你会看到数据库中所有用户的数据显示在控制台!
五、常见问题解答(FAQ)
Q1:提示找不到驱动怎么办?
比如错误信息:No suitable driver found for jdbc:mysql://...
✅ 解决办法:
- 确保数据库服务已启动(如 MySQL 服务)
- 检查 URL 是否正确(比如端口号是否是 3306?数据库是否存在?)
- 确认添加了 MySQL 连接驱动依赖
Q2:提示找不到 Mapper 映射文件?
可能是路径不对,MyBatis 默认在 resources 目录下查找。
✅ 解决办法:
- 检查
mybatis-config.xml中<mapper>的resource路径是否正确(例如是/mapper/xxx.xml吗?) - 或者检查是否编译时未正确打包资源文件
Q3:SQL 报错或者查不到结果?
✅ 解决步骤:
- 在数据库客户端(如 Navicat)中手动执行那条 SQL,看看有没有结果
- 如果有结果但代码没拿到数据,检查字段名和 Java 属性名是否一致(MyBatis 默认自动映射相同名字的字段)
六、下一步学习建议
恭喜你完成了第一个 MyBatis 程序!接下来可以继续深入学习以下几个方向:
✅ 基础扩展:
- 使用注解代替 XML 编写 SQL(@Select、@Insert 等)
- 插入、更新和删除数据
- 使用动态 SQL(if、foreach 等标签)
✅ 进阶内容:
- 多表联查与结果映射(ResultMap)
- 分页查询(结合 PageHelper 等插件)
- 事务管理
- MyBatis 与 Spring 整合
七、结语:坚持动手实践!
技术不是光看就会的,尤其是像 MyBatis 这种偏向实操的框架。建议你多尝试:
- 自己重新敲一遍本例中的代码
- 尝试添加新的 SQL 查询逻辑
- 替换数据库字段试试会不会出错
记住一句话:“学编程最重要的三件事是:看例子、动手敲、多提问。”
📌 附录:完整目录结构示意
mybatis-demo/
├── pom.xml
├── src/
│ └── main/
│ ├── java/
│ │ └── com/example/mybatisdemo/
│ │ ├── App.java
│ │ ├── User.java
│ │ └── UserMapper.java
│ └── resources/
│ ├── mybatis-config.xml
│ └── mapper/
│ └── UserMapper.xml
希望这篇《MyBatis基础教程》能够帮助你在 Java 持久层框架的世界迈出第一步。如果你喜欢这样的教学方式,欢迎继续关注后续的进阶课程!🚀

评论 0