Java开发实战:使用IntelliJ IDEA 开发Spring Boot + MyBatis + MySQL的详细实现步骤

使用IntelliJ IDEA 开发Spring Boot + MyBatis + MySQL的详细实现步骤

在本文中,我们将一步步讲解如何在IntelliJ IDEA 2024.2.3中使用Spring Boot、MyBatis和MySQL来开发一个简单的Web应用。通过本文,你将学会如何设置项目、配置数据库、创建实体类、编写Mapper接口、实现服务逻辑,以及如何测试你的API。让我们开始吧!


1. 安装IntelliJ IDEA

首先,确保你安装了IntelliJ IDEA 。根据实际选择IntelliJ IDEA 版本,我安装的是IntelliJ IDEA2024.2.3,如果尚未安装,可以从官方网站下载并安装:


2. 创建一个新的Spring Boot项目

  1. 打开IntelliJ IDEA,选择“Create New Project”。
  2. 在左侧选择“Spring”选项。
  3. 选择适合的Spring Boot版本(推荐使用最新稳定版本)。
  4. 配置项目 metadata,例如:
    • Project name: 输入你的项目名称,例如 spring_boot_demo

    • Project location: 选择一个存储路径。

    • Java SDK: 确保选择了JDK 17或更高版本。注意勾选如下红色标识框所示选项:

    • 在这里插入图片描述

    • Spring Boot: 选择一个适合的版本,例如 3.4.2

    • Template: 选择 “Web” 和 “MyBatis Spring Boot Starter”。勾选如下3个依赖项:

    • 在这里插入图片描述

在这里插入图片描述

  • Project metadata: 配置 GroupArtifact,例如:
    • Group: com.example
    • Artifact: spring_boot_demo
  1. 点击“Finish”创建项目。

3. 配置MySQL数据库

3.1 安装MySQL

  1. 下载并安装MySQL Community Server:
  2. 安装完成后,启动MySQL服务。

3.2 创建数据库和表

打开MySQL命令行工具(或使用heidisql、TablePlus等可视化工具)并执行以下SQL语句:

-- 创建数据库
CREATE DATABASE demo_db;

-- 切换到数据库
USE demo_db;

-- 创建表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    age INT
);

3.3 插入测试数据

-- 插入测试数据
INSERT INTO users (name, email, age) 
VALUES 
('张三', 'zhangsan@example.com', 25),
('李四', 'lisi@example.com', 30),
('王五', 'wangwu@example.com', 28);

4. 配置MySQL连接

在项目的 application.properties 文件中,添加以下配置:

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password  # 输入你的MySQL密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis 配置
mybatis.type-aliases-package=com.example.spring_boot_demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml

5. 创建实体类

创建一个 User 实体类,位于 src/main/java/com/example/spring_boot_demo/entity 目录:

package com.example.spring_boot_demo.entity;

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

    // 无参构造方法(必须)
    public User() {}

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

    public Integer getAge() { return age; }
    public void setAge(Integer age) { this.age = age; }
}

6. 创建Mapper接口

src/main/java/com/example/spring_boot_demo/mapper 目录下,创建一个 UserMapper 接口:

package com.example.spring_boot_demo.mapper;

import com.example.spring_boot_demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users")
    List<User> findAll();
}

7. 实现服务层

src/main/java/com/example/spring_boot_demo/service 目录下,创建一个 UserService 类:

package com.example.spring_boot_demo.service;

import com.example.spring_boot_demo.entity.User;
import com.example.spring_boot_demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private final UserMapper userMapper;

    @Autowired
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public List<User> getAllUsers() {
        return userMapper.findAll();
    }
}

8. 创建控制层

src/main/java/com/example/spring_boot_demo/controller 目录下,创建一个 UserController 类:

package com.example.spring_boot_demo.controller;

import com.example.spring_boot_demo.entity.User;
import com.example.spring_boot_demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/users")
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
}

代码解释
这个代码片段是一个基于Spring Boot的RESTful API控制器,用于处理与用户相关的HTTP请求。下面是对代码的详细解释:

1)包声明

package com.example.spring_boot_demo.controller;
  • 这行代码声明了当前类所在的包路径。包路径通常用于组织和管理代码,确保类名的唯一性。

2) 导入依赖

import com.example.spring_boot_demo.entity.User;
import com.example.spring_boot_demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
  • 这些import语句导入了代码中所需的类。包括:
    • User:用户实体类,通常用于表示数据库中的用户表。
    • UserService:服务层接口或类,用于处理业务逻辑。
    • Spring框架的注解:如@Autowired@GetMapping@RequestMapping@RestController等。
    • List:Java集合框架中的接口,用于存储一组对象。

3)控制器类

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
}
  • @RestController:这个注解表示该类是一个RESTful风格的控制器。它结合了@Controller@ResponseBody注解,意味着该类中的方法返回的数据将直接作为HTTP响应体返回,而不是视图名称。

  • @RequestMapping("/users"):这个注解用于映射HTTP请求到控制器的处理方法。在这里,所有以/users开头的请求都会由UserController处理。

  • private final UserService userService;:这是一个私有的、不可变的UserService类型的成员变量。final关键字表示这个变量一旦被初始化后就不能再被修改。

  • @Autowired:这个注解用于自动注入依赖。Spring框架会自动查找合适的UserService实现类,并将其注入到UserController中。这里使用了构造函数注入的方式。

  • public UserController(UserService userService):这是控制器的构造函数,用于初始化userService。由于使用了@Autowired注解,Spring会自动将UserService的实例传递给这个构造函数。

  • @GetMapping:这个注解用于映射HTTP GET请求到getAllUsers方法。当客户端发送一个GET请求到/users时,这个方法会被调用。

  • public List<User> getAllUsers():这是控制器中的一个方法,用于处理GET请求。它调用userService.getAllUsers()方法来获取所有用户的数据,并返回一个List<User>对象。这个列表会被自动转换为JSON格式并作为HTTP响应体返回给客户端。

4) 总结

  • 这个UserController类是一个典型的Spring Boot RESTful控制器,它通过UserService来处理与用户相关的业务逻辑,并通过HTTP接口暴露这些功能。
  • 当客户端发送一个GET请求到/users时,控制器会调用userService.getAllUsers()方法,获取所有用户的数据,并将其以JSON格式返回给客户端。
  • 这种设计遵循了MVC(Model-View-Controller)模式,控制器负责处理请求和响应,服务层负责业务逻辑,实体类负责数据模型。

9. 启动Spring Boot应用

  1. 打开项目的主类 SpringBootDemoApplication.java 并运行:
package com.example.spring_boot_demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }

}
  1. 应用启动后,控制台会显示:

在这里插入图片描述

浏览器输入:http://localhost:8080/users获取如下
在这里插入图片描述

10. 使用Postman测试API

  1. 打开Postman,发送一个 GET 请求到以下地址:
    http://localhost:8080/users
    
  2. 如果配置无误,你将收到如下JSON响应:
    [
        {
            "id": 1,
            "name": "张三",
            "email": "zhangsan@example.com",
            "age": 25
        },
        {
            "id": 2,
            "name": "李四",
            "email": "lisi@example.com",
            "age": 30
        },
        {
            "id": 3,
            "name": "王五",
            "email": "wangwu@example.com",
            "age": 28
        }
    ]
    

11. 在IntelliJ IDEA中使用数据库工具

IntelliJ IDEA 提供了强大的数据库工具,能帮助你直接在IDE中管理数据库。

  1. 打开数据库工具:
    • 点击菜单栏的 “View > Tool Windows > Database”
  2. 配置数据源:
    • 点击 “+” 按钮并选择 “MySQL”
    • 输入主机、端口、数据库名、用户名和密码
  3. 操作数据库:
    • 你可以直接在IDE中执行SQL语句、查看表结构等。

注意事项

  1. 数据库密码
    • 确保 application.properties 中的数据库密码与MySQL安装时设置的密码一致。
  2. 端口占用
    • 如果提示 “Port 8080 is already in use”,检查是否有其他应用占用了该端口。
  3. 字段匹配
    • 确保数据库表字段与 User 类中的字段保持一致。
  4. MyBatis日志
    • 如果需要调试MyBatis SQL,可以启用日志:
      logging.level.com.example.spring_boot_demo.mapper=DEBUG
      

总结

通过以上步骤,你已经成功使用IntelliJ IDEA 2024.2.3开发了一个基于Spring Boot、MyBatis和MySQL的Web应用。你可以通过扩展控制器和Mapper接口,添加更多功能,如添加、修改和删除用户数据。希望本文能帮助你快速上手这些技术栈的开发!

### 如何在 IntelliJ IDEA使用 MySQL 创建数据库和表 #### 准备工作 为了能够在 IntelliJ IDEA 中创建并管理 MySQL 数据库,需先安装好 MySQL 并确保其服务正在运行。另外,在 IntelliJ IDEA 内部需要配置好与 MySQL 的连接。 #### 配置 MySQL 连接 按照如下方式设置 MySQL 连接到 IntelliJ IDEA: 1. 打开 **Database** 工具窗口; 2. 点击加号按钮 `+` 后选择 **Data Source** -> **MySQL**; 3. 输入必要的连接参数,比如主机名、端口、用户名以及密码等,并指定驱动程序版本以匹配使用MySQL 版本[^4]; 4. 测试连接是否成功通过点击 **Test Connection** 按钮验证连通性。 #### 创建新数据库 一旦建立了成功的连接,则可以通过 SQL 脚本来定义新的数据库结构: ```sql CREATE DATABASE IF NOT EXISTS my_database; USE my_database; CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) UNIQUE ); ``` 上述脚本会尝试创建名为 `my_database` 的数据库,并在其内部建立一张叫做 `users` 的表格用于存储用户信息。如果该数据库已经存在则不会重复创建[^1]。 #### 利用图形界面操作 除了编写 SQL 语句外,还可以利用 IntelliJ 提供的可视化工具来进行更直观的操作。当选择了某个具体的 schema 或者 table 对象之后,右键菜单提供了诸如 “Create Table...”, "Add Column..." 等选项支持快速构建数据模型[^3]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿享天开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值