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

半夏微凉
2025-06-19 06:03
阅读 492

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

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

你可能听过一个词叫“后端开发”,它的工作之一是让应用程序和数据库进行交互。也就是说,程序需要把数据存进数据库,或者从数据库里读取数据。传统的做法是直接使用 JDBC(Java 数据库连接),但是写起来又多又复杂。

MyBatis 是一个 Java 的持久层框架,它的作用就是简化数据库操作。你可以把它看成是一个“桥梁”,让我们用更简单的方式与数据库打交道。

💡 MyBatis 的特点:

  • 灵活控制 SQL 语句
  • 不强制要求 ORM 映射(不像 Hibernate 那样封装太深)
  • 更适合需要精细控制 SQL 的场景

现在,我们就来一步步了解并上手 MyBatis!


二、环境准备:搭建 MyBatis 开发环境

二、环境准备:搭建 MyBatis 开发环境

学习之前,你需要准备好以下开发环境:

1. 安装 JDK 和 IDE

  • JDK(Java Development Kit)建议使用 JDK 8 或以上版本。
  • 推荐使用 IDEA(IntelliJ IDEA) 或者 Eclipse 作为开发工具。

2. 安装 MySQL(或其他数据库)

这里我们以最常用的 MySQL 为例:

  • 下载安装:MySQL官网
  • 建议配合客户端工具如 NavicatDBeaver 操作数据库会更方便。

创建一个测试数据库和表,例如:

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 小项目

四、实战项目:跟着教程完成第一个 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&amp;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

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