Java 集成MySQL+MyBatis实战(含代码)

在 Java 开发中,MyBatis 是一个功能强大的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs 映射成数据库中的记录。本文将通过实战案例,详细展示如何使用 MyBatis 集成 MySQL,实现对数据库的增删改查操作。

一、环境准备

在开始编写代码之前,确保你已经安装并配置好了以下环境:

  1. Java 开发环境:安装 JDK 11 及以上版本,并配置好环境变量。

  2. MySQL 数据库:安装 MySQL 数据库,并创建一个名为 mybatis_demo 的数据库。

  3. 集成开发环境:推荐使用 IntelliJ IDEA 或 Eclipse。

  4. MyBatis 和 MySQL 驱动依赖:在项目中添加 MyBatis 和 MySQL 驱动的依赖。

二、项目结构

以下是一个典型的 MyBatis 项目结构:

src
├── main
│   ├── java
│   │   └── com.example.mybatis
│   │       ├── Employee.java
│   │       ├── EmployeeMapper.java
│   │       └── Main.java
│   └── resources
│       ├── mybatis-config.xml
│       └── EmployeeMapper.xml

三、代码实现

1. 创建数据库表

首先,在 MySQL 数据库中创建一个名为 employee 的表:

CREATE DATABASE mybatis_demo;
USE mybatis_demo;

CREATE TABLE employee (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL
);

2. 添加依赖

pom.xml 文件中添加以下依赖:


    
    
        org.mybatis
        mybatis
        3.5.9
    
    
    
        mysql
        mysql-connector-java
        8.0.23
    

3. 编写实体类

创建一个 Employee 类,用于表示数据库中的 employee 表:

package com.example.mybatis;

public class Employee {
    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 "Employee [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

4. 编写 MyBatis 配置文件

创建一个 mybatis-config.xml 文件,用于配置 MyBatis:




    
        
            
            
                
                
                
                
            
        
    
    
        
    

5. 编写 Mapper 接口和映射文件

创建一个 EmployeeMapper.java 接口,定义数据库操作方法:

package com.example.mybatis;

public interface EmployeeMapper {
    void insertEmployee(Employee employee);
    Employee getEmployeeById(int id);
    void updateEmployee(Employee employee);
    void deleteEmployee(int id);
}

创建一个 EmployeeMapper.xml 文件,映射 SQL 语句到接口方法:




    
        INSERT INTO employee (name, age) VALUES (#{name}, #{age})
    

    

    
        UPDATE employee SET name = #{name}, age = #{age} WHERE id = #{id}
    

    
        DELETE FROM employee WHERE id = #{id}
    

6. 编写工具类

创建一个 MyBatisUtil.java 类,用于管理 MyBatis 的会话:

package com.example.mybatis;

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;

public class MyBatisUtil {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }
}

7. 编写主类测试代码

创建一个 Main.java 类,测试 MyBatis 的功能:

package com.example.mybatis;

import org.apache.ibatis.session.SqlSession;

public class Main {
    public static void main(String[] args) {
        // 插入数据
        Employee employee = new Employee();
        employee.setName("John Doe");
        employee.setAge(30);

        try (SqlSession session = MyBatisUtil.getSession()) {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            mapper.insertEmployee(employee);
            session.commit();
        }

        // 查询数据
        try (SqlSession session = MyBatisUtil.getSession()) {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            Employee emp = mapper.getEmployeeById(1);
            System.out.println(emp);
        }

        // 更新数据
        Employee updatedEmployee = new Employee();
        updatedEmployee.setId(1);
        updatedEmployee.setName("Jane Doe");
        updatedEmployee.setAge(31);

        try (SqlSession session = MyBatisUtil.getSession()) {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            mapper.updateEmployee(updatedEmployee);
            session.commit();
        }

        // 删除数据
        try (SqlSession session = MyBatisUtil.getSession()) {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            mapper.deleteEmployee(1);
            session.commit();
        }
    }
}

四、运行结果

运行 Main.java 后,控制台输出如下:

Employee [id=1, name=John Doe, age=30]

数据库中的数据将按照以下顺序操作:

  1. 插入一条新记录:John Doe, 30

  2. 查询该记录并打印到控制台

  3. 更新该记录为:Jane Doe, 31

  4. 删除该记录

五、总结

通过以上步骤,我们成功地使用 MyBatis 集成 MySQL,实现了对数据库的增删改查操作。MyBatis 提供了灵活的配置和强大的功能,使得数据库操作变得简单而高效。在实际开发中,可以根据项目需求进一步扩展和优化代码。

你可能感兴趣的:(java,mysql,架构设计,java,mysql,mybatis,后端,数据库)