Java 项目教程《尚庭公寓》,单体架构项目,从开发到部署

Java 项目教程《尚庭公寓》,单体架构项目,从开发到部署

Java 项目教程《尚庭公寓》Java项目从开发到部署

一、参考资料

【Java项目教程《尚庭公寓》java项目从开发到部署,适合新手其含金量高的Java项目实战】 https://www.bilibili.com/video/BV1At421K7gP/?share_source=copy_web&vd_source=855891859b2dc554eace9de3f28b4528
尚庭公寓项目 Gitee 地址 https://gitee.com/yangjunbo-jetli/shangting-apartment.git

二、笔记总结

1、课程简介

项目介绍
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
前期准备

1、安装 MySQL
2、初始化数据库
3、安装 maven 配置阿里云镜像仓库
4、安装 JDK 17
5、安装 IDEA

2、idea 创建项目

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



在这里插入图片描述


在这里插入图片描述

3、父工程添加版本管理依赖

在这里插入图片描述
<!-- 继承Spring Boot父项目 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></parent><!-- 注意:直接替换pom文件中原有的properties --><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mybatis-plus.version>3.5.3.1</mybatis-plus.version><swagger.version>2.9.2</swagger.version><jwt.version>0.11.2</jwt.version><easycaptcha.version>1.6.2</easycaptcha.version><minio.version>8.2.0</minio.version><knife4j.version>4.1.0</knife4j.version><aliyun.sms.version>2.0.23</aliyun.sms.version></properties><!--配置dependencyManagement统一管理依赖版本--><dependencyManagement><dependencies><!--mybatis-plus--><!--官方文档:https://baomidou.com/pages/bab2db/ --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!--knife4j文档--><!--官方文档:https://doc.xiaominfo.com/docs/quick-start --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency><!--JWT登录认证相关--><!--官方文档:https://github.com/jwtk/jjwt#install-jdk-maven --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>${jwt.version}</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><scope>runtime</scope><version>${jwt.version}</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><scope>runtime</scope><version>${jwt.version}</version></dependency><!--图形验证码--><!--官方文档:https://gitee.com/ele-admin/EasyCaptcha --><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>${easycaptcha.version}</version></dependency><!--对象存储,用于存储图像等非结构化数据--><!--官方文档:https://min.io/docs/minio/linux/developers/minio-drivers.html?ref=docs#java-sdk --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version></dependency><!--阿里云短信客户端,用于发送短信验证码--><!--官方文档:https://help.aliyun.com/document_detail/215759.html?spm=a2c4g.215759.0.0.49f32807f4Yc0y --><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>${aliyun.sms.version}</version></dependency></dependencies></dependencyManagement>

4、web_admin 模块引入 web 依赖

<!--包含spring web相关依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--包含spring test相关依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
<!-- Spring Boot Maven插件,用于打包可执行的JAR文件 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

5、web_admin 模块创建 yml 配置文件,创建启动类

web_admin模块src/main/resources目录下创建application.yml配置文件,内容如下:

server: port: 8080 

web_admin模块下创建com.yangjunbo.lease.AdminWebApplication类,内容如下:

@SpringBootApplication public class AdminWebApplication { public static void main(String[] args) { SpringApplication.run(AdminWebApplication.class, args); } } 

6、引入 Mybatis-Plus

在这里插入图片描述

common模块的pom.xml文件中增加如下内容:

<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!--mysql驱动--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency>

在model模块的pom.xml文件中增加如下内容:

<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency>

web_admin模块application.yml文件增加如下内容:

spring:datasource:type: com.zaxxer.hikari.HikariDataSource url: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8username: <username>password: <password>hikari:connection-test-query: SELECT 1 # 自动检测连接connection-timeout:60000#数据库连接超时时间,默认30秒idle-timeout:500000#空闲连接存活最大时间,默认600000(10分钟)max-lifetime:540000#此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟maximum-pool-size:12#连接池最大连接数,默认是10minimum-idle:10#最小空闲连接数量pool-name: SPHHikariPool # 连接池名称#用于打印框架生成的sql语句,便于调试mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 

common模块下创建com.yangjunbo.lease.common.mybatisplus.MybatisPlusConfiguration类,内容如下:

@Configuration@MapperScan("com.atguigu.lease.web.*.mapper")publicclassMybatisPlusConfiguration{}

7、引入 Knife4j

在这里插入图片描述


web模块的pom.xml文件添加如下内容

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId></dependency>

model模块的pom.xml文件添加上述内容

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId></dependency>

web-admin模块下创建com.yangjunbo.lease.web.admin.custom.config.Knife4jConfiguration类,内容如下:

@ConfigurationpublicclassKnife4jConfiguration{@BeanpublicOpenAPIcustomOpenAPI(){returnnewOpenAPI().info(newInfo().title("后台管理系统API").version("1.0").description("后台管理系统API"));}@BeanpublicGroupedOpenApisystemAPI(){returnGroupedOpenApi.builder().group("系统信息管理").pathsToMatch("/admin/system/**").build();}@BeanpublicGroupedOpenApiloginAPI(){returnGroupedOpenApi.builder().group("后台登录管理").pathsToMatch("/admin/login/**","/admin/info").build();}@BeanpublicGroupedOpenApiapartmentAPI(){returnGroupedOpenApi.builder().group("公寓信息管理").pathsToMatch("/admin/apartment/**","/admin/room/**","/admin/label/**","/admin/facility/**","/admin/fee/**","/admin/attr/**","/admin/payment/**","/admin/region/**","/admin/term/**","/admin/file/**").build();}@BeanpublicGroupedOpenApileaseAPI(){returnGroupedOpenApi.builder().group("租赁信息管理").pathsToMatch("/admin/appointment/**","/admin/agreement/**").build();}@BeanpublicGroupedOpenApiuserAPI(){returnGroupedOpenApi.builder().group("平台用户管理").pathsToMatch("/admin/user/**").build();}}

8、导入基础代码,使用一些逆向工具自动生成基础代码(例如实体类、mapper、service等),在使用Mybatis-Plus作为存储层框架时,推荐使用IDEA中的[Mybatis X]插件。

  • 先把项目中的包名 com.yangjunbo 改成 com.atguigu,然后使用课件中提供到生成好的基础代码,继续开发。
  • 如何使用插件生成基础代码,后续再研究,先继续往下学习。
  • 课件下载地址,免费视频及资料下载地址:https://pan.baidu.com/s/1PhTeMkX5vOg0ZRcw0abjCw?pwd=yyds 提取码:yyds

9、导入接口定义代码

导入课件中提供的接口相关代码

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

10、支付方式查询列表

在这里插入图片描述


在这里插入图片描述

11、保存或更新支付方式

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

12、删除支付方式

在这里插入图片描述

13、租期管理

在这里插入图片描述

14、标签查询列表

在这里插入图片描述

15、自定义 converter

在这里插入图片描述


在这里插入图片描述

16、自定义 converterFactory

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

17、EnumbValue 和 JsonValue 注解

在这里插入图片描述


在这里插入图片描述

18、标签保存更新删除

在这里插入图片描述


在这里插入图片描述

19、配套管理

在这里插入图片描述

20、基本属性概述

在这里插入图片描述

21、保存或更新属性名称属性值

在这里插入图片描述

22、基本属性查询列表

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

23、基本属性删除

在这里插入图片描述

24、公寓管理杂费

在这里插入图片描述


在这里插入图片描述

25、公寓管理地区信息

在这里插入图片描述

26、上传图片概述

在这里插入图片描述


在这里插入图片描述

27、配置 MinioClient

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

28、上传图片接口实现

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

29、上传图片异常处理

在这里插入图片描述

30、Spring 全局异常处理

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

31、公寓信息概述

在这里插入图片描述

32、公寓信息保存或更新定义

在这里插入图片描述

33、公寓信息保存或更新实现

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

34、公寓信息分页查询概述

在这里插入图片描述

35、公寓信息分页查询实现

在这里插入图片描述


在这里插入图片描述



在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

36、公寓信息详情查询定义

在这里插入图片描述

37、公寓信息详情查询实现

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

38、公寓信息删除实现

在这里插入图片描述

39、公寓信息删除完善

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

40、公寓信息剩余接口

在这里插入图片描述


在这里插入图片描述

41、房间信息概述

在这里插入图片描述

42、房间信息测试

在这里插入图片描述

43、看房预约修改状态

在这里插入图片描述

44、看房预约分页查询

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

45、时间格式时区

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

46、租约概述

在这里插入图片描述

47、租约保存或更新

在这里插入图片描述

48、租约剩余接口

在这里插入图片描述

49、租约定时任务

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

50、用户管理

在这里插入图片描述


在这里插入图片描述

51、岗位管理

在这里插入图片描述

52、用户信息概述

在这里插入图片描述

53、用户信息分页查询

在这里插入图片描述

54、根据 ID 查询用户信息

在这里插入图片描述


在这里插入图片描述

55、用户信息保存或更新

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

56、用户信息剩余接口

在这里插入图片描述

57、租约信息分页查询

这个应该是跟着第 46 节后面

58、登录管理认证方案

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

59、JWT 概述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

60、登录流程

在这里插入图片描述


在这里插入图片描述

61、获取验证码准备工作

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

62、获取验证码实现

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

63、登录接口上

在这里插入图片描述

64、登录接口下

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

65、登录管理拦截器

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

66、查询登录用户信息

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

67、前后端联调

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

68、移动端项目初始化

在这里插入图片描述


在这里插入图片描述

69、登录管理交互流程

在这里插入图片描述

70、获取短信验证码上

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

71、获取短信验证码下

在这里插入图片描述


在这里插入图片描述

72、注册和登录

在这里插入图片描述


在这里插入图片描述

73、获取个人信息

在这里插入图片描述

74、找房、地区、支付方式接口

在这里插入图片描述

75、分页查询房间列表

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

76、找房剩余接口

在这里插入图片描述

77、查询浏览历史接口

在这里插入图片描述

78、保存浏览历史接口

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

79、看房预约接口

在这里插入图片描述

80、租约管理接口

在这里插入图片描述

81、前后端联调

在这里插入图片描述

82、缓存优化

在这里插入图片描述


在这里插入图片描述



在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

83、部署方案

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

84、Nginx 快速入门概述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

85、Nginx 快速入门案例实操

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

86、配置域名映射

在这里插入图片描述

87、部署后端项目

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

88、部署前端项目

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



在这里插入图片描述


在这里插入图片描述



在这里插入图片描述


在这里插入图片描述

Read more

【前端开发之JavaScript】(四)JS基础语法下篇:函数与对象核心要点深度解析

【前端开发之JavaScript】(四)JS基础语法下篇:函数与对象核心要点深度解析

目录 前言 一、函数:JS 的 “代码积木” 1.1 函数的基本定义与调用 1.2 函数的参数特性:灵活的 “传参规则” 1.3 函数表达式:把函数 “存进变量里” 1.4 作用域与作用域链:函数的 “变量访问规则” 1.4.1 全局作用域与局部作用域(函数作用域) 1.4.2 作用域链:变量的 “链式查找规则” 二、对象:JS 的 “万物皆对象” 2.1 对象的三种创建方式 2.1.1 字面量方式创建对象【推荐】 2.

By Ne0inhk
JAVA IO流:从基础原理到实战应用

JAVA IO流:从基础原理到实战应用

JAVA IO流:从基础原理到实战应用 1.1 本章学习目标与重点 💡 掌握IO流的核心概念与分类,理解字节流与字符流的区别和适用场景。 💡 熟练使用字节流完成文件的读取与写入操作,解决文件拷贝等实际问题。 💡 掌握字符流的使用方法,处理文本文件的编码与解码问题。 💡 了解缓冲流、转换流、对象流等高级IO流的原理,提升IO操作效率。 ⚠️ 本章重点是 字节流与字符流的核心用法 和 高级IO流的实战应用,这是JAVA文件操作的必备技能。 1.2 IO流核心概念与分类 1.2.1 什么是IO流 💡 IO流(Input/Output Stream)是JAVA中用于处理设备之间数据传输的技术,主要负责数据的读取(Input)和写入(Output)。 常见的IO操作包括文件读写、网络通信数据传输等。IO流的核心思想是以流的方式处理数据,数据像水流一样从一个设备流向另一个设备,实现数据的传输与处理。 1.2.2 IO流的分类标准 JAVA中的IO流体系庞大,可按照不同标准进行分类,核心分类方式有以下三种: 1.

By Ne0inhk
Java Map常用方法和实现类深度详解

Java Map常用方法和实现类深度详解

文章目录 * 前言 * 第一章 Map接口概述 * 1.1 Map的继承体系 * 1.2 Map的核心特性 * 1.3 存储结构的理解 * 第二章 HashMap:最常用的Map实现 * 2.1 底层数据结构演进 * 2.2 核心源码深度解析 * 2.2.1 重要成员变量 * 2.2.2 设计哲学解读 * 2.3 put方法执行流程 * 2.4 扩容机制(resize) * 2.5 线程安全问题 * 第三章 LinkedHashMap:保持插入顺序 * 3.1 数据结构特点 * 3.2 两种排序模式 * 3.

By Ne0inhk
基于飞算JavaAI的在线图书借阅平台设计与实现(深度实践版)

基于飞算JavaAI的在线图书借阅平台设计与实现(深度实践版)

摘要: 本文以从概念到落地,完整构建一个“在线图书借阅平台”的全过程。文章不仅覆盖了环境配置、需求分析、接口设计、数据库建模等基础流程,更着重于展示AI自动生成的项目核心代码,并在此基础上进行了详尽的功能扩展和代码优化。通过对用户管理、图书管理、借阅与归还等关键业务模块的详细代码实现与注释,本文旨在全面、深入地展现飞算JavaAI在真实项目开发中的强大能力,探讨其如何重塑传统Java开发范式,显著提升开发效率与代码质量。 一、引言 在软件工程领域,随着业务逻辑的日益复杂化和市场对产品迭代速度的严苛要求,传统的纯手动编码模式正面临前所未有的挑战。开发周期长、人力成本高、代码质量参差不齐、技术债累积等问题,成为制约项目成功的重要因素。正是在这样的背景下,人工智能辅助编程(AI-Assisted Programming)应运而生,它通过将大型语言模型与软件工程知识深度融合,旨在自动化处理开发流程中的重复性、模式化任务,使开发者能够聚焦于更具创造性的核心业务逻辑。 飞算科技推出的飞算JavaAI,正是这一变革浪潮中的杰出代表。它作为一款深度集成于IntelliJ IDEA的智能插件,能够

By Ne0inhk