Javaweb之SpringBootWeb案例的详细解析

news2024/11/19 8:44:50

SpringBootWeb案例

前面我们已经讲解了Web前端开发的基础知识,也讲解了Web后端开发的基础(HTTP协议、请求响应),并且也讲解了数据库MySQL,以及通过Mybatis框架如何来完成数据库的基本操作。 那接下来,我们就通过一个案例,来将前端开发、后端开发、数据库整合起来。 而这个案例呢,就是我们前面提到的Tlias智能学习辅助系统。

在这个案例中,前端开发人员已经将前端工程开发完毕了。 我们需要做的,就是参考接口文档完成后端功能的开发,然后结合前端工程进行联调测试即可。

完成后的成品效果展示:

今天的主要内容如下:

  • 准备工作

  • 部门管理

  • 员工管理

下面我们就进入到今天的第1个内容准备工作的学习。

1. 准备工作

准备工作的学习,我们先从"需求"和"环境搭建"开始入手。

1.1 需求&环境搭建

1.1.1 需求说明

1、部门管理

部门管理功能开发包括:

  • 查询部门列表

  • 删除部门

  • 新增部门

  • 修改部门

2、员工管理

员工管理功能开发包括:

  • 查询员工列表(分页、条件)

  • 删除员工

  • 新增员工

  • 修改员工

1.1.2 环境搭建

步骤:

  1. 准备数据库表(dept、emp)

  2. 创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok)

  3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类

  4. 准备对应的Mapper、Service(接口、实现类)、Controller基础结构

第1步:准备数据库表

-- 部门管理
create table dept(
    id int unsigned primary key auto_increment comment '主键ID',
    name varchar(10) not null unique comment '部门名称',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '修改时间'
) comment '部门表';
-- 部门表测试数据
insert into dept (id, name, create_time, update_time) values(1,'学工部',now(),now()),(2,'教研部',now(),now()),(3,'咨询部',now(),now()), (4,'就业部',now(),now()),(5,'人事部',now(),now());
​
​
​
-- 员工管理(带约束)
create table emp (
  id int unsigned primary key auto_increment comment 'ID',
  username varchar(20) not null unique comment '用户名',
  password varchar(32) default '123456' comment '密码',
  name varchar(10) not null comment '姓名',
  gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女',
  image varchar(300) comment '图像',
  job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',
  entrydate date comment '入职时间',
  dept_id int unsigned comment '部门ID',
  create_time datetime not null comment '创建时间',
  update_time datetime not null comment '修改时间'
) comment '员工表';
-- 员工表测试数据
INSERT INTO emp
    (id, username, password, name, gender, image, job, entrydate,dept_id, create_time, update_time) VALUES
    (1,'jinyong','123456','金庸',1,'1.jpg',4,'2000-01-01',2,now(),now()),
    (2,'zhangwuji','123456','张无忌',1,'2.jpg',2,'2015-01-01',2,now(),now()),
    (3,'yangxiao','123456','杨逍',1,'3.jpg',2,'2008-05-01',2,now(),now()),
    (4,'weiyixiao','123456','韦一笑',1,'4.jpg',2,'2007-01-01',2,now(),now()),
    (5,'changyuchun','123456','常遇春',1,'5.jpg',2,'2012-12-05',2,now(),now()),
    (6,'xiaozhao','123456','小昭',2,'6.jpg',3,'2013-09-05',1,now(),now()),
    (7,'jixiaofu','123456','纪晓芙',2,'7.jpg',1,'2005-08-01',1,now(),now()),
    (8,'zhouzhiruo','123456','周芷若',2,'8.jpg',1,'2014-11-09',1,now(),now()),
    (9,'dingminjun','123456','丁敏君',2,'9.jpg',1,'2011-03-11',1,now(),now()),
    (10,'zhaomin','123456','赵敏',2,'10.jpg',1,'2013-09-05',1,now(),now()),
    (11,'luzhangke','123456','鹿杖客',1,'11.jpg',5,'2007-02-01',3,now(),now()),
    (12,'hebiweng','123456','鹤笔翁',1,'12.jpg',5,'2008-08-18',3,now(),now()),
    (13,'fangdongbai','123456','方东白',1,'13.jpg',5,'2012-11-01',3,now(),now()),
    (14,'zhangsanfeng','123456','张三丰',1,'14.jpg',2,'2002-08-01',2,now(),now()),
    (15,'yulianzhou','123456','俞莲舟',1,'15.jpg',2,'2011-05-01',2,now(),now()),
    (16,'songyuanqiao','123456','宋远桥',1,'16.jpg',2,'2007-01-01',2,now(),now()),
    (17,'chenyouliang','123456','陈友谅',1,'17.jpg',NULL,'2015-03-21',NULL,now(),now());

第2步:创建一个SpringBoot工程,选择引入对应的起步依赖(web、mybatis、mysql驱动、lombok) (版本选择2.7.5版本,可以创建完毕之后,在pom.xml文件中更改版本号)

生成的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> 
    </parent>
    <groupId>com.itheima</groupId>
    <artifactId>tlias-web-management</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>tlias-web-management</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>
​
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
​
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
​
</project>

创建项目工程目录结构:

第3步:配置文件application.properties中引入mybatis的配置信息,准备对应的实体类

  • application.properties (直接把之前项目中的复制过来)

#数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
spring.datasource.username=root
spring.datasource.password=1234
​
#开启mybatis的日志输出
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
​
#开启数据库表字段 到 实体类属性的驼峰映射
mybatis.configuration.map-underscore-to-camel-case=true
  • 实体类

/*部门类*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
    private Integer id;
    private String name;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}
/*员工类*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String image;
    private Short job;
    private LocalDate entrydate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

第4步:准备对应的Mapper、Service(接口、实现类)、Controller基础结构

数据访问层:

  • DeptMapper

package com.itheima.mapper;
import org.apache.ibatis.annotations.Mapper;
​
@Mapper
public interface DeptMapper {
}
  • EmpMapper

package com.itheima.mapper;
import org.apache.ibatis.annotations.Mapper;
​
@Mapper
public interface EmpMapper {
}
​

业务层:

  • DeptService

package com.itheima.service;
​
//部门业务规则
public interface DeptService {
}
  • DeptServiceImpl

package com.itheima.service.impl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
​
//部门业务实现类
@Slf4j
@Service
public class DeptServiceImpl implements DeptService {
}
  • EmpService

package com.itheima.service;
​
//员工业务规则
public interface EmpService {
}
  • EmpServiceImpl

package com.itheima.service.impl;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
​
//员工业务实现类
@Slf4j
@Service
public class EmpServiceImpl implements EmpService {
​
}

控制层:

  • DeptController

package com.itheima.controller;
import org.springframework.web.bind.annotation.RestController;
​
//部门管理控制器
@RestController
public class DeptController {
}
  • EmpController

package com.itheima.controller;
import org.springframework.web.bind.annotation.RestController;
​
//员工管理控制器
@RestController
public class EmpController {
}

项目工程结构:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB实验Simulink的应用

本文MATLAB源码&#xff0c;下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740734 一、实验目的 1.熟悉Simulink操作环境。 2.掌握建立系统仿真模型以及系统仿真分析的方法。 二、实验内容 1.利用Simulink仿真下列曲…

【数据结构】哈希表详解,举例说明 java中的 HashMap

一、哈希表&#xff08;Hash Table&#xff09;简介&#xff1a; 哈希表是一种数据结构&#xff0c;用于实现字典或映射等抽象数据类型。它通过把关键字映射到表中的一个位置来实现快速的数据检索。哈希表的基本思想是利用哈希函数将关键字映射到数组的索引位置上&#xff0c;…

centos7 arm服务器编译安装openssl 1.1.1版本

前言 在centos7中&#xff0c;默认安装的openssl版本是1.0.2&#xff0c;太低了&#xff0c;在python项目开发中&#xff0c;由于需要用到requests包&#xff0c;这时候就会出现如下错误“ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1”&#xff1a; 解决办法就只能…

10万字200道软件测试经典面试总结(附答案)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;获取《110万字200道软件测试经典面试总结&#xff08;附答案&#xff09;》pdf&#xff0c;背题更方便&#xff0c;一文在手&#xff…

lvgl模拟器

学习目标 能够搭建lvgl模拟器开发环境 学习内容 项目源码准备 http://docs.lvgl.io/latest/en/html/get-started 下载模拟器项目 GitHub - lvgl/lv_port_pc_eclipse: PC simulator project for LVGL embedded GUI Library. Recommended on Linux and Mac. 下载lvgl源码 …

一键制作底片效果,让视频复古感倍增!

你是否厌倦了千篇一律的视频效果&#xff0c;想要尝试一些与众不同的视觉体验&#xff1f;是否想要让你的视频散发出一种复古、怀旧的气息&#xff1f;现在&#xff0c;有了我们的底片效果制作工具&#xff0c;这些愿望全部实现 首先第一步&#xff0c;我们要进入视频剪辑高手…

echarts柱状图顶部设置倾斜并且展示数字

将下面代码直接复制粘贴在此运行就能查看效果Apache ECharts&#xff0c;一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。https://echarts.apache.org/examples/zh/editor.html?care…

脚本计算器1.5

python是热门语言,库多&#xff0c;界面设计麻烦。 aardio是国人开发的编程语言&#xff0c;可以快速开发界面。 aardio核心下载包只有几兆&#xff0c;免安装&#xff0c;写import py3执行可以自动安装python嵌入包 import py3; import web.form; var wb web.form(mainFor…

eBPF运行时安全

引言 eBPF作为当前linux系统上最为炙手可热的技术&#xff0c;通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控&#xff0c;当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目&#xff0c;致力于提供高效的容器通信和强大的安…

关于cdn资源失效的问题,一个月了都解决不了,七牛云技术这么差的吗?

起因 最近登录我的gpt镜像网站后&#xff0c;发现关于面具的图片资源都失效了 CoCo-AI 于是紧急使用 F12 排查原因 发现所有图片拿出来都已经无法访问了。看来是资源出了问题 在网上一番搜索后发现是 cdn.staticfile.org 失效导致的&#xff0c;而该静态资源属于七牛云&#…

关于晶振回流焊工艺,你知道哪些呢!

晶振&#xff0c;作为现代电子设备中的核心元件&#xff0c;其制造过程需要经过多道精密的工艺流程。其中&#xff0c;回流焊工艺是晶振制造过程中一个至关重要的环节。本文将详细介绍回流焊工艺在晶振制造中的应用&#xff0c;以及关键的注意事项。 一、回流焊工艺简介 回流…

久坐提醒多久提醒一次比较好 让电脑每小时提醒更健康

作为一名上班族&#xff0c;我每天都与电脑为伴&#xff0c;久坐几乎成了我的常态。但随着时间的推移&#xff0c;我发现久坐真的有很多坏处。不仅容易腰酸背痛&#xff0c;而且有时还会感觉头晕目眩&#xff0c;工作效率也大打折扣。 为了改变这一状况&#xff0c;我开始寻找…

# 由cmos到基本逻辑门

由cmos到基本逻辑门 cmos 如图所示&#xff0c; g 0 g0 g0时&#xff0c;p管连通&#xff0c;n管断开&#xff1b;否则相反。 Not gate p p p管在上&#xff0c; n n n管在下&#xff1b;当 A 1 A1 A1&#xff0c; p p p断开&#xff0c; n n n接通&#xff0c; Y Y Y输出G…

在线文本差异对比工具

Text Compare! - Find differences between two text files

Langchain 与 Elasticsearch:创新数据检索的融合实战

1、简介 在信息爆炸的时代&#xff0c;有效地检索和处理数据变得至关重要。Langchain 和 Elasticsearch 的结合&#xff0c;为我们提供了一个强大的工具&#xff0c;以更智能的方式进行数据检索和分析。 作为一名拥有多年 Elasticsearch 实战经验的技术博主&#xff0c;我将在本…

D1380/D1381串行计时芯片,2.0V~5.5V 工作电流: 2V时 与TTL 兼容,采用DIP8、SOP8封装

D1380/D1381是一个带秒、分、时、日、日期、月、年的串行时钟保持芯片,每个月多少天以及闰年能自动调节, D1380/D1381低功耗工作方式, D1380/D1381用若干寄存器存储对应信息&#xff0c;一个32.768kHz 的晶振校准时钟&#xff0c;为了使用最小弓|脚&#xff0c;D1380/D1381使用…

操作系统复习 九-十二 章

操作系统复习 九-十二 章 文章目录 操作系统复习 九-十二 章第九章 单处理器调度调度的概念调度的时机、切换与过程进程调度方式调度的基本准则进程的挂起态与七状态模型典型的调度算法 第十一章 I/O管理和磁盘调度I/O 设备I/O控制方式I/O子系统的层次结构IO子系统概述IO调度概…

各种排序算法学习笔记

Docshttps://r0dhfl3ujy9.feishu.cn/docx/XFlEdnqv9oCEoVx7ok8cpc4knnf?fromfrom_copylink如果你认为有错误&#xff0c;欢迎指出&#xff01;

大数据开发之Hive(查询、分区表和分桶表、函数)

第 6 章&#xff1a;查询 6.1 基本语法及执行顺序 1、查询语句语法 select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list] [CLUSTER BY col_list| [DISTRIBUTE BY col_list] [SORT BY col_list]] [LIMIT n…

RK3568驱动指南|驱动基础进阶篇-进阶2 让驱动快一点被加载实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…