从零开始:使用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. 初始化项目
- 打开IntelliJ IDEA,选择"File" → “New” → “Project”
- 选择"Spring Initializr",配置以下信息:
- Name: demo
- Type: Maven
- Java: 17
- Packaging: Jar
- 添加必要的依赖:
- 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连接池:
- 在pom.xml中添加依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
- 修改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