MyBatis基础教程:Java持久层框架入门

产品经理别看我
2025-06-12 21:50
阅读 609

一、开篇:MyBatis是什么?用来做什么?

一、开篇:MyBatis是什么?用来做什么?

大家好,欢迎来到这篇面向零基础新手的 《MyBatis基础教程》。如果你是刚接触 Java 编程的新手,或者想从传统 JDBC 操作转向更高效的数据库操作方式,那么你来对地方了!

🎯什么是 MyBatis?

MyBatis 是一个基于 Java 的持久层框架(Persistence Framework)。它简化了 Java 和数据库之间的交互过程,让开发者可以专注于业务逻辑,而不必重复地编写繁琐的 JDBC 代码。

通俗点说:

MyBatis 就是一个“翻译官”,负责把我们写的 Java 程序和数据库“沟通”起来。

⚙️为什么要用 MyBatis?

传统的 JDBC 开发需要写很多模板代码(比如打开连接、执行 SQL、处理结果等),而这些工作在每次操作中几乎都是一样的。使用 MyBatis,我们可以:

  • 把 SQL 写在 XML 文件或注解中,方便管理和维护
  • 自动映射数据库表字段到 Java 对象
  • 提高开发效率,降低出错概率

现在就让我们一起动手,来体验一下 MyBatis 的魅力吧!


二、环境准备:搭建你的第一个 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)
  • usernamepassword:换成自己的 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);


![微服务架构示意图-1](https://code-guide.oss.shanghai.autogptai.club/common/file/download?name=date2025061221/1574cd7c-d9ce-40ca-911c-d979be2d0d10.jpg)


            // 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 基础,只是一个开始。以下是几个进阶方向建议:

  1. 掌握 MyBatis 注解方式:摆脱 XML 文件,使用 @Select, @Insert 等注解更简洁。
  2. 动态 SQL 学习:学会使用 <if>, <foreach>, <choose> 等标签构造复杂查询。
  3. 集成 Spring Boot:实际项目中通常将 MyBatis 与 Spring Boot 结合使用。
  4. 事务管理与缓存机制:了解 MyBatis 的事务管理和二级缓存机制,提升性能。
  5. 阅读官方文档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

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝