1小时快速上手SpringBoot,熟练掌握CRUD

一、SpringBoot简介

SpringBoot是一个脚手架,用于快速搭建一个基于Spring的web应用,开箱即用!创建即可开发业务代码,其设计目的是用来简化Spring应用的初始搭建以及开发过程

优点

  • 快速构建一个独立的 Spring 应用程序;
  • 嵌入的 Tomcat、Jetty 或者 Undertow,无须部署 WAR文件;
  • 提供starter POMs来简化Maven配置和减少版本冲突所带来的问题;
  • 对Spring和第三方库提供默认配置(约定大于配置),也可修改默认值,简化框架配置;
  • 无需配置XML--JavaConfig,无代码生成,开箱即用

二、创建项目

添加项目依赖

SpringBoot项目结构

修改配置文件

新建数据库

创建对应的包

三、创建实体类

新建User类

类级别注解

  1. @Entity

    • 标记该类为 JPA 实体类,表明它对应数据库中的一张表。
    • 只有被 @Entity 标记的类,才能被 JPA 识别并进行数据库操作(如 CRUD)。
  2. @Table(name = "tb_user")

    • 指定该实体类对应的数据库表名。
    • 如果不写这个注解,JPA 会默认使用类名作为表名(此处若省略,会默认对应表 user,但这里显式指定为 tb_user,更符合实际表名规范)。

属性级别注解

  1. @Id

    • 标记该字段为表的主键(Primary Key)。
    • 每个实体类必须有且仅有一个主键字段。
  2. @GeneratedValue(strategy = GenerationType.IDENTITY)

    • 指定主键的生成策略:

      • GenerationType.IDENTITY 表示主键由数据库自动生成(依赖数据库的自增功能,如 MySQL 的 AUTO_INCREMENT)。
      • 其他常见策略:AUTO(JPA 自动选择)、SEQUENCE(依赖数据库序列)、TABLE(用一张专门的表维护主键)。
  3. @Column(name = "字段名")

    • 用于指定实体类属性与数据库表中字段的映射关系:

      • name 属性:指定对应的数据库字段名(如 @Column(name = "user_id") 表示该属性对应表中的 user_id 字段)。
      • 如果属性名与数据库字段名一致(忽略大小写),可以省略此注解(但建议显式指定,增强可读性)。
      • 还可配置其他属性:如 length(字段长度)、nullable(是否允许为 null)等。

启动项目,为我们自动创建数据库表

四、编写接口

新建UserController

Restful接口:

在HTTP协议中,有不同的发送请求的方式,分别是GET、POST、PUT、DELETE等,我们如果能让不同的请求方式表示不同的请求类型就可以简化查询

五、编写业务逻辑类

新建UserService类,IUserService接口

java 复制代码
package com.kehanzhu.crud_test.service;

import com.kehanzhu.crud_test.pojo.User;
import com.kehanzhu.crud_test.pojo.dto.UserDto;

public interface IUserService {
    /**
     * 插入用户
     *
     * @param user 参数
     * @return user对象
     */
    User add(UserDto user);
}
java 复制代码
package com.kehanzhu.crud_test.service;

import com.kehanzhu.crud_test.pojo.User;
import com.kehanzhu.crud_test.pojo.dto.UserDto;
import com.kehanzhu.crud_test.repository.UserRepository;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service //spring的bean
public class UserService implements IUserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    public User add(UserDto user) {
        User userPojo = new User();
        BeanUtils.copyProperties(user, userPojo);
        return userRepository.save(userPojo);
    }
}

六、编写数据访问类

新建UserRepository接口

java 复制代码
package com.kehanzhu.crud_test.repository;

import com.kehanzhu.crud_test.pojo.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends CrudRepository<User, Integer> {
}

七、测试接口

使用postman测试接口

异常情况:

相关推荐
葫芦和十三8 小时前
图解 MongoDB 04|索引模型:每建一个索引,就是在 B+-tree 森林里多栽一棵
后端·mongodb·agent
用户47949283569159 小时前
claude Fable用不了?把Gpt 5.5pro接到你的claude code里
前端·后端
GetcharZp12 小时前
告别 Nginx 复杂配置!这款带 Web 面板的万能代理神器,让端口转发变得如此简单
后端
IT_陈寒14 小时前
React的useState居然还有这种坑?我差点删库跑路
前端·人工智能·后端
Pedantic15 小时前
SwiftUI 手势笔记
前端·后端
金銀銅鐵15 小时前
[Python] 从《千字文》中随机挑选汉字
后端·python
飘尘17 小时前
前端转型全栈(Java后端)的快速上手指引
前端·后端·全栈
浏览器工程师19 小时前
AI Agent 接浏览器任务,先别让它一路点到底
前端·后端
行者全栈架构师19 小时前
Maven dependency:tree 的 8 个高级用法
java·后端