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

CD还没发
2025-06-30 13:14
阅读 279

开篇:MyBatis是什么?它能帮你做什么?

开篇:MyBatis是什么?它能帮你做什么?

你有没有遇到过这样的问题?在写Java程序的时候,你想把数据保存到数据库里,但写SQL语句、处理结果集特别麻烦,而且容易出错。

这时候,一个叫 MyBatis 的工具就可以帮助你了。MyBatis 是一个非常流行的 Java 持久层框架,它的作用是简化 Java 与数据库之间的交互

简单点说:

  • 如果你用原生 JDBC 写 SQL、处理参数和结果,那可能会很繁琐。
  • 而 MyBatis 帮你把这些“脏活累活”包装起来,让你用更少的代码完成更多的事情。

它有什么特点?

特点 说明
灵活性高 所有 SQL 都是你自己写的,完全掌控
易于集成 很容易和 Spring、Spring Boot 结合使用
映射机制 可以将数据库查询结果自动映射成 Java 对象
学习成本低 入门快,适合初学者上手

现在我们就开始一步一步从零学起吧!


第一步:环境准备

第一步:环境准备

在开始使用 MyBatis 之前,你需要准备好开发环境。我们这里选择的是最基础也最常见的组合:

  • JDK(Java Development Kit)1.8 或以上
  • MySQL 数据库
  • IntelliJ IDEA(IDE)
  • Maven(项目构建工具)

步骤一:安装 JDK 并配置环境变量

略(假设你已经装好 Java,可以通过 java -version 检查)

步骤二:安装 MySQL 并创建测试数据库

下载 MySQL 社区版并安装:https://dev.mysql.com/downloads/installer/

安装完成后,使用命令行或图形化工具创建一个测试数据库:

CREATE DATABASE mybatis_demo;

再建一张简单的用户表:

USE mybatis_demo;

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

步骤三:安装 IntelliJ IDEA 并新建 Maven 项目

打开 IDEA:

  • 选择 "Create New Project"
  • 选择 Maven,勾选 Create from archetype,然后点击下一步
  • 输入 GroupId(比如 com.example)
  • ArtifactId(比如 mybatis-tutorial)
  • 点击 finish 创建项目

步骤四:添加 MyBatis 和数据库驱动依赖

打开 pom.xml 文件,在 <dependencies> 标签中添加如下内容:

<!-- MyBatis 核心依赖 -->
<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.26</version>
</dependency>

注意版本号要与你的环境匹配。

小结一下

现在你已经:

✅ 安装了 JDK
✅ 安装了 MySQL 并创建了数据库和表
✅ 使用 IntelliJ 创建了一个 Maven 项目
✅ 引入了 MyBatis 和 MySQL 的依赖

接下来,就是真正开始写代码啦!


第二步:理解 MyBatis 的核心概念

第二步:理解 MyBatis 的核心概念

为了让你更容易理解 MyBatis,我们先来了解几个关键术语:


核心概念一:SqlSession

这是 MyBatis 中操作数据库的核心对象,你可以把它想象成一个会话窗口。通过这个窗口,你可以执行增删改查等所有操作。


核心概念二:Mapper 接口 & XML

Mapper 接口是一个 Java 接口,里面定义了你要调用的方法,比如 “根据ID查询用户”;

对应还有一个 Mapper XML 文件,里面有对应的 SQL 语句。

MyBatis 把接口方法和 XML 中的 SQL 绑定在一起,这样你就可以直接通过接口调用数据库操作了。


核心概念三:Configuration 配置文件

这个是 MyBatis 的主配置文件,通常叫做 mybatis-config.xml,在里面可以配置数据库连接信息、别名、插件等等。


核心概念四:POJO 实体类

POJO(Plain Old Java Object)是用来映射数据库记录的 Java 类。例如一个 User 类,属性跟 user 表字段一一对应。


这些概念听起来有点抽象?没关系!接下来我们在实战项目中一一解释。


第三步:动手做一个小项目 —— 用户管理功能

第三步:动手做一个小项目 —— 用户管理功能

目标:实现一个简单的 Java 应用,能够对数据库中的 user 表进行插入和查询。


第1步:创建实体类 User.java

src/main/java/com/example 下创建包结构,如 com.example.entity,然后新建类 User.java

package com.example.entity;

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

    // Getter and Setter 方法
    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }
}

第2步:编写 UserMapper 接口

创建一个新的包,如 com.example.mapper,然后新建接口:

package com.example.mapper;

import com.example.entity.User;
import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(int id);
    void insertUser(User user);
}

第3步:创建 UserMapper.xml

src/main/resources 目录下创建一个文件夹:mappers,并在该目录下创建 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.entity.User">
        SELECT * FROM user
    </select>

    <!-- 查询指定id的用户 -->
    <select id="getUserById" parameterType="int" resultType="com.example.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <!-- 插入新用户 -->
    <insert id="insertUser" parameterType="com.example.entity.User">
        INSERT INTO user (name, email) VALUES (#{name}, #{email})
    </insert>
</mapper>

第4步:创建 mybatis-config.xml

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/mybatis_demo?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="your_password"/> <!-- 修改为你自己的密码 -->
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

⚠️ 注意:请确认数据库用户名、密码、数据库名是否正确


第5步:编写主函数运行测试

src/main/java/com/example 包下新建类 MainApp.java

package com.example;

import com.example.entity.User;
import com.example.mapper.UserMapper;
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 MainApp {
    public static void main(String[] args) throws IOException {
        // 加载 mybatis 配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 获取 SqlSession
        try (SqlSession session = sqlSessionFactory.openSession()) {

            // 获取 Mapper 接口实例
            UserMapper mapper = session.getMapper(UserMapper.class);

            // 测试插入用户
            User user = new User();
            user.setName("Tom");
            user.setEmail("tom@example.com");
            mapper.insertUser(user);
            session.commit();  // 提交事务
            System.out.println("插入成功");

            // 查询所有用户
            List<User> users = mapper.getAllUsers();
            for (User u : users) {
                System.out.println("ID:" + u.getId() + ", 名字:" + u.getName() + ", 邮箱:" + u.getEmail());
            }


![服务器部署方案-1](https://code-guide.oss.shanghai.autogptai.club/common/file/download?name=date2025063013/9c61bd36-f99b-49b8-af66-40399868728b.jpg)


            // 查询某个用户
            User tom = mapper.getUserById(1);
            System.out.println("查到用户:" + tom.getName());
        }
    }
}

运行项目验证

在 IDEA 中运行 MainApp,你应该可以看到控制台输出类似如下内容:

插入成功
ID:1, 名字:Tom, 邮箱:tom@example.com
查到用户:Tom

恭喜你!你已经完成了第一个 MyBatis 示例!


新手常见问题解答

Q1:为什么我运行时提示找不到 mapper.xml 文件?

A:检查 XML 是否放在 resources/mappers 目录下,且在 mybatis-config.xml 中是否被正确引用。


Q2:报错提示 "Could not find resource"

A:路径可能不对。确保 resource 属性值和文件位置一致,比如:

<mapper resource="mappers/UserMapper.xml"/>

XML 文件应该在 resources/mappers/ 路径下。


Q3:为什么不能插入数据?没有任何报错但数据没进库?

A:记得手动提交事务!使用 session.commit() 来提交事务,否则数据不会保存。


Q4:如何调试 SQL 语句?

A:可以在 logback.xml 或 log4j.xml 中开启日志输出。也可以在 IDE 控制台查看生成的 SQL。


Q5:为什么 getMapper 总返回 null?

A:检查你的 Mapper 接口全限定名和 XML 的 namespace 是否一致,比如:

com.example.mapper.UserMapper

XML 中:

<mapper namespace="com.example.mapper.UserMapper">

下一步学习建议

你已经掌握了 MyBatis 最基本的使用方法。接下来可以从以下几个方向深入学习:

方向 内容
动态 SQL 学习 if、choose、where、set、foreach 等标签的使用
复杂映射 处理一对一、一对多等关联查询
注解开发 用注解方式代替 XML,更加简洁
日志集成 集成 Log4j2 / Slf4j 查看执行日志
缓存机制 学习一级缓存、二级缓存
整合 Spring Boot 进阶知识,让 MyBatis 更易于维护和使用

小结

在这篇教程中,我们从零开始,带你一步步搭建 MyBatis 环境,并完成了一个简单的数据库操作示例。你已经学会:

  • 理解 MyBatis 的主要作用
  • 搭建开发环境并引入依赖
  • 编写实体类、Mapper 接口及 XML 文件
  • 编写主程序运行数据库操作
  • 解决一些常见的错误

MyBatis 是 Java 开发者必备技能之一,掌握它之后,你会发现自己在做数据库操作时更加得心应手!


如果你觉得这篇文章对你有所帮助,欢迎点赞、收藏或者转发给需要的朋友。如果你有任何疑问或想要继续学习的内容,欢迎留言讨论 😊

评论 0

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