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

大家好,欢迎来到这篇面向零基础新手的 《MyBatis基础教程》。如果你是刚接触 Java 编程的新手,或者想从传统 JDBC 操作转向更高效的数据库操作方式,那么你来对地方了!
🎯什么是 MyBatis?
MyBatis 是一个基于 Java 的持久层框架(Persistence Framework)。它简化了 Java 和数据库之间的交互过程,让开发者可以专注于业务逻辑,而不必重复地编写繁琐的 JDBC 代码。
通俗点说:
MyBatis 就是一个“翻译官”,负责把我们写的 Java 程序和数据库“沟通”起来。
⚙️为什么要用 MyBatis?
传统的 JDBC 开发需要写很多模板代码(比如打开连接、执行 SQL、处理结果等),而这些工作在每次操作中几乎都是一样的。使用 MyBatis,我们可以:
- 把 SQL 写在 XML 文件或注解中,方便管理和维护
- 自动映射数据库表字段到 Java 对象
- 提高开发效率,降低出错概率
现在就让我们一起动手,来体验一下 MyBatis 的魅力吧!
二、环境准备:搭建你的第一个 MyBatis 开发环境

✅ 前提条件:已安装 Java(JDK 1.8 或以上)、Maven、IDE(推荐 IntelliJ IDEA)
步骤 1:创建一个 Maven 项目
打开 IDEA → New Project → 选择 Maven → 创建空白项目
Group Id:com.example
Artifact Id:mybatis-demo
项目结构如下图所示:
mybatis-demo/
├── src/
│ └── main/
│ ├── java/ ← Java源码
│ └── resources/ ← 配置文件
└── pom.xml ← Maven配置文件
步骤 2:添加 MyBatis 和 MySQL 依赖
编辑 pom.xml 文件,在 <dependencies> 中加入以下内容:
<dependencies>
<!-- MyBatis核心库 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>
🔧 注意:版本号可以根据最新文档进行调整。
步骤 3:配置数据库连接信息
在 src/main/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/test_db?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
📌 替换说明:
url:换成你的数据库地址和数据库名(如 test_db)username和password:换成自己的 MySQL 登录信息
接下来,我们要建一张测试用的数据表。
步骤 4:创建测试表 user
登录 MySQL 命令行,执行以下 SQL:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
email VARCHAR(255)
);
INSERT INTO user(name, email) VALUES('张三', 'zhangsan@example.com');
三、核心概念:理解 MyBatis 的关键组成部分
1. MyBatis 四大核心组件
| 组件名称 | 作用说明 |
|---|---|
SqlSessionFactoryBuilder |
读取配置并构建 SqlSessionFactory |
SqlSessionFactory |
工厂类,生成 SqlSession |
SqlSession |
可执行 SQL、获取 Mapper 接口 |
Mapper 接口 + XML 映射文件 |
定义具体 SQL 和 Java 类型的绑定 |
你可以这样理解它们之间的关系:
配置文件 + 数据库驱动 → SqlSessionFactoryBuilder → SqlSessionFactory → SqlSession → 调用 Mapper → 执行 SQL
2. Mapper 文件与接口的作用
✨ Mapper 接口
在 src/main/java/com/example/ 目录下新建一个接口 UserMapper.java:
package com.example;
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
}
🗂️ Mapper XML 文件
在 resources 目录下创建 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.UserMapper">
<select id="getAllUsers" resultType="com.example.User">
SELECT * FROM user
</select>
</mapper>
注意这里的 resultType 是你将来要定义的 Java 实体类。
3. 实体类(POJO)
再新建一个实体类 User.java:
package com.example;
public class User {
private Integer id;
private String name;
private String email;
// Getter & Setter 略
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
四、实战项目:实现一个简单的查询功能
现在我们已经准备好所有必要的资源和配置了,下面来写一个完整的程序,调用 MyBatis 查询所有用户数据。
步骤 1:加载配置并获取 Mapper
在 src/main/java/com/example/App.java 中写入以下代码:
package com.example;
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.IOException;
import java.io.InputStream;
import java.util.List;
public class App {
public static void main(String[] args) {
try {
// 1. 加载配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 2. 获取 SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
// 3. 获取 Mapper 接口实现
UserMapper mapper = session.getMapper(UserMapper.class);
// 4. 调用方法获取数据
List<User> users = mapper.getAllUsers();
// 5. 输出结果
for (User user : users) {
System.out.println(user);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行效果
运行 App.java,控制台输出结果类似如下:
User{id=1, name='张三', email='zhangsan@example.com'}
🎉恭喜!你已经成功用 MyBatis 完成了数据库查询操作!
五、常见问题解答
❓ Q1:No mapping found for SQL statement in class xxx.Mapper
出现这个错误一般是因为:
- Mapper 接口中的方法名和 XML 中的
<select>标签中的id不一致 - XML 文件没有被正确注册到配置文件的
<mappers>中
✅ 解决办法:
确认 XML 中的 namespace 是否对应接口类路径,并且方法名一致。
❓ Q2:报错 ClassNotFoundException: com.mysql.cj.jdbc.Driver
这是因为 MySQL 驱动未正确引入。
✅ 解决办法:
检查 pom.xml 是否添加了 MySQL 依赖,并确保版本兼容当前 JDK 版本。
❓ Q3:运行时提示 Can't connect to MySQL server on 'localhost'
可能是:
- MySQL 服务未启动
- 用户密码或地址填写错误
- 端口不是默认 3306
✅ 解决办法: 通过命令行或客户端工具验证是否能正常连接 MySQL 数据库。
六、学习建议:下一步该学什么?
学会了 MyBatis 基础,只是一个开始。以下是几个进阶方向建议:
- 掌握 MyBatis 注解方式:摆脱 XML 文件,使用
@Select,@Insert等注解更简洁。 - 动态 SQL 学习:学会使用
<if>,<foreach>,<choose>等标签构造复杂查询。 - 集成 Spring Boot:实际项目中通常将 MyBatis 与 Spring Boot 结合使用。
- 事务管理与缓存机制:了解 MyBatis 的事务管理和二级缓存机制,提升性能。
- 阅读官方文档:MyBatis 中文文档
总结
本篇文章从零开始,带着大家搭建了一个简易的 MyBatis 项目环境,并实现了一个简单的数据库查询操作。MyBatis 作为一款轻量级但强大的持久层框架,值得每一个 Java 初学者深入学习。
希望你在阅读本文后,不仅掌握了基本知识,还激发了进一步探索的兴趣。如果还有疑问,欢迎留言交流!
祝你编程之路越走越远,早日成为 Java 后端高手!🚀
📌 附录:完整项目结构一览
mybatis-demo/
├── pom.xml
├── mybatis-config.xml
├── UserMapper.xml
└── src/
└── main/
└── java/
├── com.example.App
├── com.example.User
└── com.example.UserMapper
🔚 教程结束,感谢阅读!

评论 0