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

在我们日常开发中,很多应用程序都需要与数据库打交道。比如购物网站需要记录用户的订单、学校系统需要存储学生信息等等。而传统的JDBC代码往往非常繁琐,写起来容易出错,维护也不方便。
MyBatis(发音为“美比特”)是一个轻量级的Java持久层框架,它可以帮助开发者更高效地操作数据库,减少重复代码,提高可读性和开发效率。简单来说:
MyBatis = SQL + Java对象 的桥梁
它不像一些全自动ORM框架那样帮你自动映射,而是给了你更大的灵活性和控制权 —— 你可以写自己的SQL语句,同时还能把结果映射成Java对象。这种平衡使得MyBatis非常流行。
环境准备:搭建你的第一个MyBatis环境

步骤1:安装Java环境
确保你已经安装了Java(推荐使用JDK8或以上)。可以在终端输入以下命令查看是否安装成功:
java -version
javac -version
如果没有,请前往 Oracle官网 或使用OpenJDK下载安装包。
步骤2:选择一个IDE
推荐使用 IntelliJ IDEA 或 Eclipse。本文以 IntelliJ IDEA 为例,因为它对Maven项目支持很好,适合新手快速上手。
步骤3:创建Maven项目
- 打开IDEA → File → New → Project
- 选择 Maven → Next
- 输入 GroupId(例如
com.example)和 ArtifactId(例如mybatis-demo) - 创建完成后,在项目结构中你会看到一个
pom.xml文件
步骤4:添加MyBatis依赖
打开 pom.xml,在 <dependencies> 部分添加以下内容:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
保存后,Maven会自动下载所需库文件。
步骤5:配置数据库连接信息
我们需要一个简单的MySQL数据库做演示。请先创建测试数据库和用户表:
数据库初始化脚本:
CREATE DATABASE mydemo;
USE mydemo;
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(100)
);
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
接着在项目根目录下创建一个文件 mybatis-config.xml,用于配置MyBatis的全局设置:
<?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/mydemo?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="your_password"/> <!-- 请替换为你的数据库密码 -->
</dataSource>
</environment>
</environments>
</configuration>
至此,环境搭建完毕!
核心概念讲解:通俗易懂的术语解释
什么是DAO?
DAO 是 Data Access Object(数据访问对象)的缩写。它是负责与数据库交互的对象。在MyBatis中,我们通常通过接口来表示DAO。
什么是Mapper?
Mapper 是 MyBatis 中的核心组件之一,是 DAO 接口的具体实现方式。它将接口方法与 SQL 语句绑定在一起。
什么是XML映射文件?
MyBatis 允许你将 SQL 写在 XML 文件中,并通过 Mapper 接口进行调用。这样可以保持 Java 代码的整洁,便于统一管理和调试。
什么是动态SQL?
MyBatis 支持根据条件拼接 SQL,这就是所谓的“动态 SQL”。比如,我们可以根据用户的输入条件筛选数据,非常灵活。
实战项目:跟着教程一步步完成一个简单项目
我们来做一个简单的项目:查询用户信息并输出到控制台。
第一步:创建User实体类
在 src/main/java/com/example/model 路径下新建 User.java:
package com.example.model;
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接口
在 src/main/java/com/example/mapper 下创建 UserMapper.java:
package com.example.mapper;
import com.example.model.User;
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
}
第三步:编写XML映射文件
在 src/main/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.mapper.UserMapper">
<select id="getAllUsers" resultType="com.example.model.User">
SELECT * FROM users
</select>
</mapper>
第四步:注册Mapper文件
修改之前创建的 mybatis-config.xml,添加Mapper路径:
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
第五步:编写主程序入口
在 src/main/java/com/example/App.java 中编写:
package com.example;
import com.example.mapper.UserMapper;
import com.example.model.User;
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) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.getAllUsers();
for (User user : users) {
System.out.println(user);
}
}
}
}
运行程序
点击运行按钮,你会在控制台看到类似如下输出:
User{id=1, name='张三', email='zhangsan@example.com'}
恭喜你,完成了第一个MyBatis项目的实战!
常见问题解答
问题1:报错提示找不到Mapper?
原因: 可能是Mapper接口没有被正确扫描或XML配置中未注册该Mapper。
解决办法:
- 检查
mybatis-config.xml中的<mappers>是否包含你编写的XML文件 - 确保接口名和XML中的
namespace一致
问题2:SQL执行错误或者数据为空?
可能原因:
- 数据库连接参数不正确(用户名、密码、URL)
- 表中无数据或字段名与Java属性名不匹配
建议做法:
- 使用Navicat或其他工具手动执行一次SQL语句看看是否有结果
- 检查字段是否使用驼峰命名与数据库字段匹配(如user_name对应userName)
问题3:MyBatis日志不显示?
如果你希望看到MyBatis执行的SQL语句,可以加上日志框架如 log4j 或 slf4j,也可以直接使用MyBatis的内置日志打印。
在MyBatis配置中添加:
<settings>
<setting name="log4j" value="STDOUT_LOGGING"/>
</settings>
这会把SQL日志打印到控制台。
学习建议:下一步的学习方向

你现在已掌握MyBatis的基础知识,可以继续深入以下几个方面:
🔍 查询进阶
- 分页查询(limit + offset)
- 多表关联查询(join语句 + resultMap)
- 动态SQL标签:
<if>、<choose>、<foreach>等
📥 插入更新删除操作
- 编写增删改的SQL语句
- 使用事务管理(commit / rollback)
🛠️ 工具整合
- 将MyBatis与Spring集成(MyBatis-Spring)
- 结合Spring Boot简化配置
🧪 单元测试
- 使用JUnit编写单元测试验证你的Dao接口
小结:学完你就掌握了什么?
| 技能点 | 说明 |
|---|---|
| 环境配置 | 会搭建MyBatis的基本环境 |
| 核心理解 | 明白MyBatis中Mapper、DAO、XML之间的关系 |
| CRUD操作 | 能写出查询、插入、更新、删除的基本操作 |
| 动态SQL | 初步了解如何使用动态语句处理不同查询条件 |
| 错误排查 | 能看懂常见异常信息并解决基础问题 |
从零开始到现在,你已经完成了从理论到实战的第一步!接下来只需要多加练习,就能熟练掌握这个强大而又灵活的数据库访问框架了!
如果你喜欢这篇文章,欢迎点赞、收藏并分享给身边想学MyBatis的小伙伴~

评论 0