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

清醒开发者
2025-06-20 12:38
阅读 498

一、开篇:MyBatis 是什么?我能用它做什么?

一、开篇:MyBatis 是什么?我能用它做什么?

在 Java 开发中,我们经常需要和数据库打交道。比如,用户注册时要把数据保存到数据库里,登录时要从数据库中读取用户信息等等。

但直接使用 JDBC(Java Database Connectivity)来操作数据库是比较麻烦的。我们需要自己写很多重复的代码,比如连接数据库、执行 SQL、处理结果集等。

这时候,MyBatis 就派上用场了。

🧩 简单理解:

MyBatis 是一个 Java 的持久层框架,它的作用是帮助你更方便地操作数据库。你可以把它看作是一个“简化版”的数据库工具箱。

  • 它让你可以专注于写 SQL
  • 把数据库的操作变得更简单
  • 提高开发效率,降低出错率

📌 通俗来说:MyBatis = 让你更轻松地操作数据库


二、环境准备:搭建你的第一个 MyBatis 工程

二、环境准备:搭建你的第一个 MyBatis 工程

在开始写代码之前,我们先准备好开发环境。

✅ 所需工具:

  1. JDK 1.8 或更高版本
  2. IDEA(推荐 IntelliJ IDEA)
  3. MySQL 数据库
  4. Maven(用于依赖管理)

🔧 步骤 1:创建 Maven 工程

打开 IntelliJ IDEA,选择:

File → New → Project → Maven → Next → 输入项目名(如 mybatis-demo)

创建完成后,会生成如下结构:

mybatis-demo/
├── pom.xml
└── src/
    └── main/
        ├── java/
        └── resources/

🔧 步骤 2:添加 MyBatis 和 MySQL 驱动依赖

编辑 pom.xml 文件,在 <dependencies> 中添加以下内容:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

📌 Tip:保存后会自动下载相关依赖包。


🔧 步骤 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?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>

📌 替换其中的用户名和密码为你自己的 MySQL 账号信息。


三、核心概念:你需要知道的几个关键词

三、核心概念:你需要知道的几个关键词

学 MyBatis 不必死记硬背,掌握以下几个关键概念就够了:

1️⃣ SqlSession

这是 MyBatis 最核心的对象之一。

💡 类似于“数据库连接 + 执行器”的组合。你可以通过它来执行 SQL 语句、调用映射器(Mapper)等。

通常我们会这样创建一个 SqlSession:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = sqlSessionFactory.openSession();

2️⃣ Mapper 接口

这是一个接口,里面定义了你要执行的数据库操作方法。

例如:

public interface UserMapper {
    User selectUserById(int id);
}

对应的方法会在 XML 文件中定义具体的 SQL。


3️⃣ Mapper XML

XML 文件中写 SQL,与接口一一对应。

举例: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="selectUserById" resultType="com.example.model.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

📌 注意点:

  • namespace 要对应接口的全路径
  • id 对应接口中的方法名
  • #{id} 是占位符,防止 SQL 注入

4️⃣ POJO(Model)

POJO 是普通的 Java 类,用来映射数据库表的字段。

比如我们有一个 users 表,对应的模型类:

package com.example.model;

public class User {
    private int id;
    private String name;
    private String email;

    // Getters and Setters
}

四、实战项目:用 MyBatis 实现一个简单的用户查询功能

我们来做一个小练习,实现根据 ID 查询用户信息的功能。

🚀 步骤 1:创建数据库和表

在 MySQL 中执行以下 SQL:

CREATE DATABASE test_db;

USE test_db;

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100)
);

INSERT INTO users(name, email) VALUES ('张三', 'zhangsan@example.com');

🚀 步骤 2:编写 Model 类

package com.example.model;

public class User {
    private int id;
    private String name;
    private String email;

    // Getters & Setters
}

🚀 步骤 3:编写 Mapper 接口

package com.example.mapper;

import com.example.model.User;

public interface UserMapper {
    User selectUserById(int id);
}

🚀 步骤 4:编写 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.mapper.UserMapper">
    <select id="selectUserById" resultType="com.example.model.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

🚀 步骤 5:编写测试类 Main.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;


![负载均衡配置-2](https://code-guide.oss.shanghai.autogptai.club/common/file/download?name=date2025062012/50da5659-fc6e-4640-b241-2bc8111ab51a.jpg)


public class Main {
    public static void main(String[] args) throws IOException {
        // 1. 加载配置
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
                .build(Resources.getResourceAsStream("mybatis-config.xml"));

        // 2. 获取 SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 3. 获取 Mapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        // 4. 调用方法
        User user = userMapper.selectUserById(1);
        System.out.println(user.getName() + " - " + user.getEmail());

        // 5. 关闭连接
        sqlSession.close();
    }
}

✅ 运行后输出:

张三 - zhangsan@example.com

🎉 成功!你已经完成了第一个 MyBatis 示例!


五、常见问题解答(FAQ)

数据库设计模型-1

❓ Q1:找不到类/加载不到配置怎么办?

  • 确保 mybatis-config.xmlresources 目录下
  • 包路径是否一致,如 UserMapper 是否被正确扫描到
  • 查看控制台是否有报错,按提示解决

❓ Q2:SQL 报错或查询不到数据?

  • 检查 SQL 写法是否正确(是否用了反引号、关键字拼写错误)
  • 检查数据库是否存在该记录
  • 使用日志查看实际执行的 SQL(后续可以引入 Log4j)

❓ Q3:MyBatis 支持哪些类型的数据操作?

  • SELECT 查询
  • INSERT 插入
  • UPDATE 修改
  • DELETE 删除
  • 存储过程、批量操作也支持

❓ Q4:为什么不用 Hibernate 而要用 MyBatis?

  • MyBatis 更加灵活,适合喜欢写 SQL 的开发者
  • 可以精细控制性能和 SQL 优化
  • 对复杂业务逻辑支持更好
  • Hibernate 更适用于快速生成 CRUD 操作

六、学习建议:接下来该怎么进阶?

学会了基础之后,下一步可以:

✅ 学习使用动态 SQL(if、foreach、choose 等标签)
✅ 学习多表关联查询
✅ 学习 PageHelper 实现分页查询
✅ 结合 Spring Boot 使用 MyBatis(主流做法)
✅ 掌握日志集成(如 Log4j)
✅ 自定义 TypeHandler(处理特殊类型的转换)

📌 推荐资源:

  • MyBatis 官方文档
  • B站视频:《MyBatis 从零开始》
  • 推荐书籍:《深入浅出 MyBatis 技术原理与实战》

总结

本文带你从零开始了解并实践了 MyBatis 的基本用法。虽然只是一个小小的起步,但它打开了通往 Java 后端世界的一扇大门。

记住一句话:

“学会 MyBatis,就是掌握了和数据库对话的能力。”

祝你在 Java 开发的路上越走越远!


✅ 下一步你就可以尝试结合 Spring Boot 使用 MyBatis,开启企业级开发之旅啦!

评论 0

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