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

创新的太阳
2025-06-17 20:27
阅读 377

一、开篇:MyBatis是做什么的?

一、开篇:MyBatis是做什么的?

在Java开发中,经常需要与数据库进行交互。比如我们开发一个用户注册系统,就需要把用户的账号信息保存到数据库中,或者从数据库中查询出某个用户的信息。

如果我们直接使用JDBC(Java Database Connectivity)来操作数据库,虽然能实现功能,但代码会非常繁琐。例如,每次连接数据库都要写很多“重复”的代码,比如加载驱动、获取连接、编写SQL语句、处理结果集等。这时候,MyBatis就派上用场了。

什么是MyBatis?

MyBatis 是一个 基于Java的持久层框架,它简化了数据库操作的过程,让开发者可以专注于业务逻辑,而不用关心底层数据库连接的细节。

简单理解就是:MyBatis 帮你管理了数据库操作的流程,你只需要写 SQL 语句和简单的配置,它就会自动帮你执行并返回结果。


二、环境准备:搭建你的第一个MyBatis项目

二、环境准备:搭建你的第一个MyBatis项目

为了更好地学习,我们将一步步搭建一个包含MyBatis的Java项目。这里以最常用的方式——使用Maven构建工具来创建项目。

步骤1:安装必要的开发工具

你需要以下工具:

  • JDK 8 或以上版本
  • IDE(如 IntelliJ IDEA / Eclipse)
  • MySQL数据库
  • Maven 构建工具

如果你还没有这些工具,请先安装好再继续下一步。

步骤2:创建Maven项目

打开IntelliJ IDEA,选择:

File → New → Project → Maven → Create from archetype

选择 maven-archetype-quickstart,然后填写 GroupId 和 ArtifactId(比如 com.example.mybatisdemo)

完成后你会看到如下目录结构:

mybatisdemo
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com.example.mybatisdemo.App.java
    └── test
        └── java
            └── com.example.mybatisdemo.AppTest.java

步骤3:添加MyBatis和MySQL依赖

找到 pom.xml 文件,在 <dependencies> 标签下加入如下内容:

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

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

保存后Maven会自动下载依赖库。

步骤4:准备数据库环境

我们创建一个简单的用户表:

CREATE DATABASE mybatis_demo;

USE mybatis_demo;

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

INSERT INTO user (name, age) VALUES ('张三', 25);

这样我们的数据库就准备好了!


三、核心概念:用白话解释MyBatis的关键知识点

三、核心概念:用白话解释MyBatis的关键知识点

学习MyBatis之前,先来了解几个重要的术语和它们的作用。

1. Mapper接口

你可以把它理解为一个“接口”,用来定义要对数据库执行的操作方法,比如“查找所有用户”、“根据id查找用户”。

示例:

public interface UserMapper {
    List<User> findAllUsers();
}

2. XML映射文件

这个文件用于写具体的 SQL 语句,并将接口的方法和 SQL 映射起来。

示例 UserMapper.xml

<mapper namespace="com.example.mapper.UserMapper">
    <select id="findAllUsers" resultType="com.example.model.User">
        SELECT * FROM user;
    </select>
</mapper>

3. MyBatis配置文件(mybatis-config.xml)

这是MyBatis的全局配置文件,主要用于设置数据库连接信息、别名、缓存等等。

示例:

<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"/>
                <property name="username" value="root"/>
                <property name="password" value="your_password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

4. 工具类SqlSessionFactory和SqlSession

这两个类是MyBatis工作的核心类。

  • SqlSessionFactory:负责读取配置文件并生成 SqlSession 实例。
  • SqlSession:真正执行SQL语句的接口。

四、实战项目:做一个查询用户列表的小项目

四、实战项目:做一个查询用户列表的小项目

现在我们来动手做一个小项目,目标是通过MyBatis连接数据库,查询所有的用户信息并打印出来。

步骤1:创建实体类 User

在项目的src/main/java下新建包 com.example.model,创建类 User.java

package com.example.model;

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

    // 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 int getAge() { return age; }
    public void setAge(int age) { this.age = age; }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

步骤2:编写Mapper接口

创建包 com.example.mapper,创建接口 UserMapper.java

package com.example.mapper;

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

public interface UserMapper {
    List<User> findAllUsers();
}

步骤3:编写Mapper XML文件

在resource目录下创建 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="findAllUsers" resultType="com.example.model.User">
        SELECT * FROM user;
    </select>
</mapper>

步骤4:编写主程序启动入口

修改App.java内容如下:

package com.example.mybatisdemo;

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.findAllUsers();

            for (User user : users) {
                System.out.println(user);
            }
        }
    }
}

步骤5:运行测试

运行 App.java 的 main 方法,控制台输出类似如下内容:

User{id=1, name='张三', age=25}

恭喜!你现在成功使用MyBatis完成了第一次数据库查询!


五、常见问题解答

下面是一些初学者常见的疑问及解答:

问题1:提示找不到驱动类怎么办?

错误信息:ClassNotFound: com.mysql.cj.jdbc.Driver

解决方法
检查是否正确添加了MySQL驱动依赖,是否已刷新Maven。也可以手动下载jar包导入lib。


问题2:XML文件路径不对,怎么配置?

确保你的 XML 文件放在 resources 目录下,并在 mybatis-config.xml 中使用相对路径引用:

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

问题3:为什么不能拿到数据?返回null?

可能原因:

  • 表字段和类属性名称不一致
  • 查询SQL有误或数据不存在
  • 接口方法未正确绑定SQL

建议:打印SQL语句、检查数据库内容、使用日志工具跟踪调用链路。


六、学习建议:接下来怎么学更好?

API接口文档-1

掌握了MyBatis的基础之后,建议你继续学习以下内容:

1. 进阶技能

  • 动态SQL(if、choose、foreach)
  • 多表关联查询
  • 注解方式开发(@Select、@Insert)
  • 使用Spring Boot整合MyBatis

2. 推荐资源

3. 动手练习

尝试自己完成CRUD(增删改查)功能,逐步提升难度。比如做一个学生管理系统、图书借阅系统等小项目。


总结

本教程从零开始,带你一步步认识了 MyBatis 框架,并通过一个完整的例子让你亲手实现了数据库查询操作。希望你能感受到它的便捷与强大。

如果你坚持每天敲几段代码、多做练习,很快就能熟练掌握这项技术!

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

评论 0

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