从零开始:使用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