从零开始:使用Spring Boot和MyBatis实现CRUD操作全攻略

发布于:2025-04-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

从零开始:使用Spring Boot和MyBatis实现CRUD操作全攻略

前言

在当今的Java开发领域,Spring Boot已经成为构建企业级应用的首选框架。它简化了传统Spring应用的初始搭建和开发过程,让开发者能够快速构建独立运行的、生产级别的应用。本文将带你从零开始,一步步搭建一个完整的Spring Boot项目,并实现基本的CRUD(创建、读取、更新、删除)功能。

一、环境准备

1. 开发工具准备

首先,我们需要准备以下开发工具和环境:

  • IntelliJ IDEA:推荐使用2023.3及以上版本,社区版或旗舰版均可
  • Java 17:Spring Boot 3.x需要Java 17及以上版本
  • MySQL 8.0+:关系型数据库,用于数据存储

2. 数据库准备

在MySQL中创建我们的测试数据库和表:

-- 创建数据库
CREATE DATABASE demo_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 使用数据库
USE demo_db;

-- 创建用户表
CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 添加测试数据
INSERT INTO user (name, age) VALUES ('张三', 25), ('李四', 30);

二、创建Spring Boot项目

1. 初始化项目

  1. 打开IntelliJ IDEA,选择"File" → “New” → “Project”
  2. 选择"Spring Initializr",配置以下信息:
    • Name: demo
    • Type: Maven
    • Java: 17
    • Packaging: Jar
  3. 添加必要的依赖:
    • Spring Web
    • MyBatis Framework
    • MySQL Driver
    • Lombok

2. 项目结构

初始化完成后,项目结构如下:

src/
  main/
    java/
      com.example.demo/
        DemoApplication.java (启动类)
    resources/
      application.properties
pom.xml

三、配置数据库连接

1. 修改application.properties

src/main/resources/application.properties中添加以下配置:

# 服务器配置
server.port=8080

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

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

# 显示SQL日志
logging.level.com.example.demo.mapper=debug

2. 添加Druid连接池(可选)

为了更好的数据库连接管理,我们可以添加Druid连接池:

  1. 在pom.xml中添加依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.16</version>
</dependency>
  1. 修改application.properties:
# 使用Druid连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000

四、编写核心代码

1. 实体类User.java

package com.example.demo.entity;

import lombok.Data;
import java.time.LocalDateTime;

@Data
public class User {
   
    private Integer id;
    private String name;
    private Integer age;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}

2. Mapper接口UserMapper.java

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {
   
    @Select("SELECT * FROM user")
    @Results({
   
        @Result(property = "createdAt", column = "created_at"),
        @Result(property = "updatedAt", column = "updated_at")
    })
    List<User> findAll();

    @Select("SELECT * FROM user WHERE id = #{id}")
    @Results({
   
        @Result(property = "createdAt", column = "created_at"),
        @Result(property = "updatedAt", column = "updated_at")
    })
    User findById(Integer id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insert(User user);

    @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
    int update(User user);

    @Delete("DELETE FROM user WHERE id=#{id}")
    int deleteById(Integer id);
}

3. Service层UserService.java

package com.example.demo.se