使用 MyBatis 连接 MySQL 数据库的完整指南

作为一名初入行业的小白,学习如何使用 MyBatis 连接 MySQL 数据库对于开发工作至关重要。MyBatis 是一款优秀的持久层框架,它可以通过简单的 XML 或注解方式,将数据库操作和 Java 对象关联起来,从而简化数据库访问的复杂性。本文将详细说明如何实现 MyBatis 连接 MySQL 的步骤,并提供相应的代码示例。

整体流程

在开始之前,先看一下实现 MyBatis 连接 MySQL 的整体流程:

步骤 描述
1. 添加依赖 在项目中添加 MyBatis 和 MySQL 的依赖
2. 创建数据库 在 MySQL 中创建所需的数据库和表
3. 配置 MyBatis 创建 MyBatis 配置文件以及映射器文件
4. 编写 Java 实体类 创建对应于数据库表的 Java 实体类
5. 创建 Mapper 接口 创建数据库操作的接口
6. 编写测试代码 测试数据库连接与操作

详细步骤及示例代码

1. 添加依赖

首先,在你的项目中,添加 MyBatis 和 MySQL 的依赖。如果你使用 Maven 来管理项目,可以在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.7</version> <!-- 请确认使用的版本 -->
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.27</version> <!-- 请确认使用的版本 -->
</dependency>

2. 创建数据库

在你的 MySQL 数据库中创建一个示例数据库和表。可以使用以下 SQL 语句:

CREATE DATABASE mybatis_demo;

USE mybatis_demo;

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

3. 配置 MyBatis

创建 mybatis-config.xml 配置文件,定义 MyBatis 的环境设置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD Configuration 1.0//EN"
  "
<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="your_username"/>
                <property name="password" value="your_password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

4. 编写 Java 实体类

创建与数据库表对应的 Java 类,即实体类 User.java

public class User {
    private Integer id;    // 用户ID
    private String name;   // 用户名
    private String email;  // 用户邮箱

    // Getter 和 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; }
}

5. 创建 Mapper 接口

创建用户操作的 Mapper 接口 UserMapper.java

import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();          // 获取所有用户
    User getUserById(int id);          // 根据ID获取用户
    void insertUser(User user);        // 插入新用户
}

6. 编写 Mapper 文件

创建 Mapper XML 文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN"
  "
<mapper namespace="mappers.UserMapper">
    <select id="getAllUsers" resultType="User">
        SELECT * FROM user
    </select>
    <select id="getUserById" parameterType="int" resultType="User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <insert id="insertUser" parameterType="User">
        INSERT INTO user (name, email) VALUES (#{name}, #{email})
    </insert>
</mapper>

7. 编写测试代码

编写测试代码,以确保一切正常工作:

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class App {
    public static void main(String[] args) {
        // 读取 MyBatis 配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = App.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 使用 SqlSession 进行数据库操作
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            
            // 添加一个用户
            User user = new User();
            user.setName("John Doe");
            user.setEmail("john.doe@example.com");
            userMapper.insertUser(user);
            session.commit(); // 提交事务
            
            // 查询所有用户
            List<User> users = userMapper.getAllUsers();
            for (User u : users) {
                System.out.println(u.getName() + " : " + u.getEmail());
            }
        }
    }
}

类图

使用以下 Mermaid 代码生成类图:

classDiagram
    User <|-- UserMapper
    UserMapper : +List<User> getAllUsers()
    UserMapper : +User getUserById(int id)
    UserMapper : +void insertUser(User user)

结尾

通过上述步骤,你已经成功地在 Java 项目中使用 MyBatis 连接并操作 MySQL 数据库。希望这篇文章能够帮助你更好地理解 MyBatis 的使用,为你今后的开发工作打下坚实的基础。继续探索 MyBatis 的更多功能,提升你的开发技能!