首页 > 其他分享 >Springboot CRUD简单实现

Springboot CRUD简单实现

时间:2024-01-27 15:12:55浏览次数:21  
标签:Springboot address CRUD public Result student 简单 tb id

SpringBoot对Spring的改善和优化,它基于约定优于配置的思想,提供了大量的默认配置和实现

使用SpringBoot之后,程序员只需按照它规定的方式去进行程序代码的开发即可,而无需再去编写一堆复杂的配置

SpringBoot的主要功能如下:

  • 起步依赖:SpringBoot以功能化的方式将需要的依赖进行组装,并且允许程序员以start的方式进行引入
  • 默认配置:SpringBoot实现了大量依赖框架的默认配置项,程序员无须再进行自己配置
  • 内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行

总之:SpringBoot最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少配置,让程序员去关注业务而非配置。

  • 简介
    在本篇博客中,我们将介绍如何使用SpringBootMyBatis框架实现一个RESTFUL风格简单的CRUD(创建、读取、更新、删除)功能。逐步介绍每个部分的实现。

  • Pom.xml文件

点击查看代码
<dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!--spring-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.16</version>
        </dependency>
        <!--spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.16</version>
        </dependency>
        <!--spring-mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.16</version>
        </dependency>
        <!--json转换工具-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
    </dependencies>  

配置文件写在resource目录下的application.yml中,
包含了项目的各种配置信息,包括服务器端口、日志级别、数据库连接信息等。

# 配置Tomcat端口
server:
  port: 80

# 配置日志级别
logging:
  level:
    com.example: debug

# 配置数据库连接
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db_example
    username: user
    password: password

# 配置MyBatis
mybatis:
  configuration:
    # MyBatis配置
  type-aliases-package: com.example.boot.domain
  mapper-locations: classpath:mapper/**/*Mapper.xml

controller层

  • 控制器层是Spring MVC中的一部分,负责接收用户请求并调用相应的服务进行处理。在这里,我们使用@RestController注解将一个类标记为控制器,并使用@RequestMapping注解指定处理的URL路径。

@Slf4j
@RestController
@RequestMapping("/student")
public class StudentController {
    @Autowired
    private StudentService studentService;

    @GetMapping
    public Result findAll(){
        // 实现查询所有学生信息的功能
        return studentService.findAll();
    }

    @PostMapping
    public Result save(@RequestBody Student student){
        // 实现新增学生信息的功能
        return studentService.save(student);
    }

    @GetMapping("/{id}")
    public Result findById(@PathVariable(name = "id")Integer id){
        // 实现根据学号选择显示学生需要修改的信息的功能
        return studentService.findById(id);
    }

    @PutMapping
    public  Result update(@RequestBody Student student){
        // 实现修改学生信息的功能
        return studentService.update(student);
    }

    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable(name = "id")Integer id){
        // 实现根据id删除学生信息的功能
        return studentService.deleteById(id);
    }
}

学生对象类

  • 学生对象类用于表示学生的信息,通常包含学生的姓名、年龄、性别等属性。
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Student {
    private Long id; // 学生ID
    private String name; // 学生姓名
    private int age; // 学生年龄
    private String gender; // 学生性别

    // 省略getter/setter方法
}

Service接口

  • Service接口定义了服务层的方法,通常用于声明业务逻辑的接口。在这里,我们定义了一些CRUD操作的接口方法。
public interface StudentService {
    Result findAll(); // 查询所有学生信息
    Result save(Student student); // 新增学生信息
    Result findById(Integer id); // 根据id查询学生信息
    Result update(Student student); // 修改学生信息
    Result deleteById(Integer id); // 根据id删除学生信息
}

service实现类

  • 服务实现类负责实际的业务逻辑处理,包括对数据库的增删改查操作。在这里,我们使用@Service注解标记一个类为服务实现类,并使用@Transactional注解开启事务管理。

@Service
@Transactional
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentMapper studentMapper;

    @Override
    public Result findAll() {
        // 实现查询所有学生信息的功能
        List<Student> students = studentMapper.findAll();
        return new Result(students);
    }

    @Override
    public Result save(Student student) {
        // 实现新增学生信息的功能
        studentMapper.save(student);
        return new Result("保存成功");
    }

    @Override
    public Result findById(Integer id) {
        // 实现根据学号选择显示学生需要修改的信息的功能
        Student student = studentMapper.findById(id);
        return new Result(student);
    }

    @Override
    public Result update(Student student) {
        // 实现修改学生信息的功能
        studentMapper.update(student);
        return new Result("修改成功");
    }

    @Override
    public Result deleteById(Integer id) {
        // 实现根据id删除学生信息的功能
        studentMapper.deleteById(id);
        return new Result("删除成功");
    }
}

sql语句:

create database springboot;
use springboot;

-- 创建名为tb_student的表
CREATE TABLE tb_student (
  id INT PRIMARY KEY AUTO_INCREMENT,
  number VARCHAR(50),
  userName VARCHAR(100),
  birthday DATE,
  address VARCHAR(255)
);

-- 添加8行数据
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('001', '张三', '1995-05-20', '北京');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('002', '李四', '1997-08-15', '上海');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('003', '王五', '1996-11-30', '广州');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('004', '赵六', '1998-04-25', '深圳');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('005', '小明', '1999-01-10', '成都');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('006', '小红', '1994-07-05', '重庆');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('007', '小华', '1993-09-12', '天津');
INSERT INTO tb_student (number, userName, birthday, address) VALUES ('008', '小李', '1992-12-28', '南京');

Mapper.xml文件里的SQL执行语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.boot.mapper.StudentMapper">
<!--    void save(Student student);-->
    <insert id="save" parameterType="com.example.boot.domain.Student">
        INSERT INTO tb_student (number, userName, birthday, address)
        VALUES (#{number}, #{userName}, #{birthday}, #{address});
    </insert>
<!--    void update(Student student);-->
    <update id="update" parameterType="com.example.boot.domain.Student">
        UPDATE tb_student
        SET number = #{number},userName=#{userName},birthday=#{birthday},address=#{address}
        WHERE id = #{id}
    </update>
<!--    void deleteById(Integer id);-->
    <delete id="deleteById">
        DELETE FROM tb_student WHERE id = #{id}
    </delete>
    <!--     List<Student> findAll(); -->
    <select id="findAll" resultType="com.example.boot.domain.Student">
        select * from tb_student
    </select>
<!--    Student findById(Integer id);-->
    <select id="findById" resultType="com.example.boot.domain.Student">
        select * from tb_student where id = #{id}
    </select>

</mapper>

部分功能页面:

新增学生:

修改学生信息:

标签:Springboot,address,CRUD,public,Result,student,简单,tb,id
From: https://www.cnblogs.com/johnnyboy-java/p/17991453

相关文章

  • SpringBoot启动过程中发布的事件
    springboot启动过程中会发布的事件(启动类的run()方法执行时)ApplicationStartingEvent:应用运行开始事件SpringBoot运行run()方法未进行任务操作时先发布此事件ApplicationEnvironmentPreparedEvent:Environment准备完成事件在Environement准备完成且应用上下文context......
  • lazarus简单实现监控网络设备数据包
    1、准备工作。从Lazarus安装目录中找到pcap.pp。加到工程中,并引用它。win下要安装WinPcap。2、写一个读取数据的回调functionhtons(hostshort:word):word;beginResult:=((hostshortand$00FF)shl8)or((hostshortand$FF00)shr8);end;procedurePacketHandler(p......
  • springboot学习:建立springboot项目及相关注意事项
    一、建立maven项目后引入依赖:以下没有版本号的依赖表示在springboot父依赖中已锁定相应的版本号必需依赖:1.springboot父依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.5</versio......
  • SpringBoot启动项目报错:java.lang.UnsatisfiedLinkError: D:\files\software\jdk-1
    目录问题描述解决方法:问题描述在运行向的时候出现报错:java.lang.UnsatisfiedLinkError:D:\files\software\jdk-15.0.1\jdk-17.0.3.1\bin\tcnative-1.dll:Can'tloadIA32-bit.dllonaAMD64-bitplatform atjava.base/jdk.internal.loader.NativeLibraries.load(Native......
  • 多线程简单介绍
    线程:是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中实际运作单位进程:进程是程序的基本执行实体,一个程序就是一个进程简单理解线程:应用软件中相互独立,可以同时运行的功能有了多线程,就可以让程序同时做多件事线程的生命周期完整的线程状态New(新建状态)->......
  • SpringBoot简易教程
     SpringBoot简易教程(01):SpringBoot基础入门SpringBoot简易教程(02):SpringBoot配置文件详解SpringBoot简易教程(03):SpringBoot整合ssmSpringBoot简易教程(04):SpringBoot单元测试SpringBoot简易教程(05):SpringBoot开发RestfulAPI及使用jmeter测试SpringBoot简易教程(06):swagger测试Rest......
  • SpringBoot中使用LocalDateTime踩坑记录
    目录前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目基于Java21和SpringBoot3开发,序列化工具使用的是默认的Jackson,使用SpringDataRedis操作Redis缓......
  • MFC 定时器的简单用法
    View下两个消息事件:ON_WM_CREATEON_WM_TIMERBEGIN_MESSAGE_MAP(CMFCApplication1View,CView)//标准打印命令ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT,&CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW,&a......
  • 简单使用vim编辑器的用法
    vim的使用笔记可以涵盖很多内容,以下是一些基本操作和常见命令的简要总结:启动Vim打开或创建文件:vimfilename基本模式切换正常模式(NormalMode):启动时默认进入此模式,用于执行移动、复制、删除等操作。进入插入模式:按下i、a、o或O键(在光标前/后插入文本、新行下方/上方......
  • 在springboot中controller控制器的crud语句@RequestBody遗落的报错
    在进行java练习的过程中,对一个单链表进行增删改查时发现了如下错误:对编译器的控制台进行检查之后,发现了报错语句如下:2024-01-2619:43:52.551ERROR18544---[p-nio-80-exec-5]o.a.c.c.C.[.[.[/].[dispatcherServlet]:Servlet.service()forservlet[dispatcherSe......