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测试接口

异常情况:

相关推荐
神奇的程序员5 小时前
从已损坏的备份中拯救数据
运维·后端·前端工程化
oden6 小时前
AI服务商切换太麻烦?一个AI Gateway搞定监控、缓存和故障转移(成本降40%)
后端·openai·api
ะัี潪ิื6 小时前
springboot加载本地application.yml和加载Consul中的application.yml配置反序列化LocalDate类型差异
spring boot·consul·java-consul
李慕婉学姐7 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_740043737 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
招风的黑耳8 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
大佐不会说日语~8 小时前
Spring AI Alibaba 的 ChatClient 工具注册与 Function Calling 实践
人工智能·spring boot·python·spring·封装·spring ai
Miss_Chenzr8 小时前
Springboot优卖电商系统s7zmj(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
程序员游老板8 小时前
基于SpringBoot3+vue3的爱心陪诊平台
java·spring boot·毕业设计·软件工程·课程设计·信息与通信
期待のcode8 小时前
Springboot核心构建插件
java·spring boot·后端