用户中心项目初始化
项目简介和计划
完整了解做项目的思路,接触一些企业级的开发技术(尽量少写代码) 目标:轻松做出管理系统
项目完整开发流程介绍
需求分析 => 设计(概要设计、详细设计) => 技术选型 => 初始化 / 引入需要的技术 => 写Demo => 写代码(实现业务逻辑) => 测试(单元测试) => 代码提交 / 代码评审 => 部署 => 发布
项目流程解释
- 需求分析
- 需求收集:收集来自项目相关方(客户、用户、利益相关者)的信息
- 需求整理:将收集到的需求信息进行分类、组织和优先级排序
- 需求分析:对整理后的需求进行深入分析,理解其背后的业务逻辑、约束条件和潜在风险
- 需求验证:与项目相关方确认需求的准确性和完整性,确保所有需求都是清晰、可衡量和可实现的
- 需求文档化:将分析后的需求以文档形式记录下来,作为项目执行和后期参考的依据
确保所有相关方对项目有共同的理解
- 设计(概要设计、详细设计)
- 概要设计:确定总体布局
- 系统总体架构:定义整体结构(硬件、软件、网络等)
- 功能模块划分:划分模块,明确各模块的功能和职责
- 接口设计:定义模块之间接口,确保模块间数据交互流畅
- 技术选型:根据需求以及技术的发展,选择适合的技术栈和工具链
- 数据库逻辑设计:数据库的逻辑结构(表结构、索引、引脚等)
- 用户界面设计:初步设计用户界面的布局和交互方式
- 详细设计:概要设计基础上,进一步细化每个模块的设计
- 算法设计:为每个功能模块设计具体的算法,实现业务逻辑
- 数据结构设计:设计详细的数据结构(数据库的物理结构、文件结构等)
- 接口物理定义:明确模块间接口的物理实现方式(Eg:API接口定义)
- 用户界面细化:详细设计用户界面的布局、样式、交互逻辑等
- 错误处理与安全性设计:考虑系统可能出现的异常情况,设计相应的错误处理机制和安全性措施
概要设计从宏观角度为项目提供总体框架和方向 -详细设计从微观角度对概要设计进行细化和具体化,确保软件系统的可实施性和高质量完成
- 技术选型
- 根据需求以及技术的发展,选择适合的技术栈和工具链
直接影响项目的开发效率和质量,还关系到项目的可维护性、可扩展性和未来的竞争力
- 初始化 / 引入需要的技术
- 根据技术选型的结果,搭建开发环境,引入所需的框架、库等,并进行必要的配置
- 新项目:初始化
- 已有项目:引入需要的技术
- 写Dem
- 在正式开始编码之前,编写一个简单的演示程序(Demo),用于验证技术选型的可行性和设计的合理性(Eg:测试组件库是否引入成功)
- 写代码(实现业务逻辑)
- 根据详细设计文档,编写实现业务逻辑的代码。需要遵循编码规范,保证代码的可读性、可维护性和可扩展性
- 测试(单元测试)
- 编写单元测试代码,对项目的各个模块进行测试,确保它们按照预期工作
- 代码提交 / 代码评审
- 将编写好的代码提交到代码仓库,并进行代码评审。代码评审可以帮助发现潜在的问题,提高代码质量
- 部署
- 将代码部署到生产环境或测试环境,进行集成测试和性能测试
- 发布
- 经过充分的测试后,将项目发布给客户或用户,进行实际使用。发布后可能还需要进行后续的维护和升级
需求分析
- 登录 / 注册
- 用户管理(仅管理员可见)对用户的查询或者修改
- 用户校验(仅星球用户)
技术选型
前端:三件套 + React + 组件库 Ant Design + Umi + Ant Design Pro(现成的管理系统) 后端:
- Java
- Spring (依赖注入框架,帮助你管理 Java 对象,集成一些其他的内容)
- SpringMVC (web 框架,提供接口访问、restful接口等能力)
- Mybatis (Java 操作数据库的框架,持久层框架,对 jdbc 的封装)
- Mybatis-plus (对 mybatis 的增强,不用写 sql 也能实现增删改查)
- SpringBoot (快速启动 / 快速集成项目。不用自己管理 spring 配置,不用自己整合各种框架)
- Junit (单元测试库)
- Mysql (数据库) 部署:服务器 / 容器(平台)
前端初始化
先放着,先学后端
后端初始化
安装 MySQL 5.7
3种方式初始化 Java 项目
- Github 上搜索 SpringBoot 模板,拉取(不推荐)
- SpringBoot 官方模板生成器(https://start.spring.io/)
- IDEA 生成(推荐)
环境搭建
1. 创建项目
spring.io 不支持勾选 Java 8 了 , 可以如下图所示,点击齿轮,将初始化链接换成阿里云的http://start.aliyun.com, 就可以正常选择 Java 8
选择版本,安装一些依赖
2. 连接数据库
连接数据库可以在IDEA中,当然也可以使用其他工具比如Navicat
Spring Boot 框架整合
1. 创建数据库
2. 按照 mybatis-plus 官方教程操作
2.1 建表
SQL
# 建表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
id BIGINT NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
# 插入数据
DELETE FROM `user`;
INSERT INTO `user` (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
2.2 pom.xml 文件中引入依赖
junit 从 maven 仓库 中引入 有什么不知道的包都可以从maven仓库中查
DANGER
选择稳定版本,注意防止依赖冲突
XML
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
2.3 配置
- application.properties 文件改成 application.yml 中编写配置
shift + F6 快速改名
视频中需要更新的地方:driver-class-name: com.mysql.cj.jdbc.Driver
yml
spring:
application:
name: user-center
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
# 如果安装了多版本的 MySQL ,此处需要修改端口号
url: jdbc:mysql://localhost:3306/user-center
username:
password:
server:
port: 8080
- 在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹(此时没有mapper文件夹,新建一个)
java
@SpringBootApplication
@MapperScan("com.yupi.usercenter.mapper")
public class UserCenterApplication {
public static void main(String[] args) {
SpringApplication.run(UserCenterApplication.class, args);
}
}
2.4 编码
- 编写实体类 User.java
java
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
- 编写 Mapper 接口类 UserMapper.java:
java
public interface UserMapper extends BaseMapper<User> {
}
bug
IDEA 错误 找不到或无法加载主类(完美解决)
解决方法
https://blog.csdn.net/l_mloveforever/article/details/112725753
采用了第二种方法解决了