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

使用 Java 将 PDF 转换为 Excel:基础转换与高级设置

使用 Java 将 PDF 转换为 Excel:基础转换与高级设置

PDF 文件在许多行业中被广泛使用,尤其是在报表、合同、发票和其他结构化文档中。当需要将 PDF 文件中的数据提取并进行进一步分析时,将 PDF 转换为 Excel 是一个常见需求。本文将展示如何使用 Java 将 PDF 文件转换为 Excel,并提供自定义设置以优化复杂 PDF 的转换效果。 一、PDF 转 Excel 简介 PDF 文件通常用于呈现内容,但有时我们需要将其转换为 Excel 格式,以便对数据进行更好的处理和分析。通过将 PDF 转换为 Excel,用户可以轻松提取表格数据并进行自动化处理。使用 Java,可以通过一些基本的 API 调用轻松完成这一转换。 二、准备工作 在开始编码之前,确保已经安装好以下依赖: * Java Development Kit

By Ne0inhk
【Java 22 | 7】 深入解析Java 22 :密封类(Sealed Classes)增强详解

【Java 22 | 7】 深入解析Java 22 :密封类(Sealed Classes)增强详解

Java 22 对密封类(Sealed Classes)进行了重要的增强,使得这一特性在类型安全和设计灵活性方面更加出色。以下是对密封类的详细介绍,包括基础概念、增强特性、丰富的使用场景示例,以及实际项目中的应用示例。 1. 基础介绍 什么是密封类(Sealed Classes) 密封类是 Java 17 引入的一种新特性,允许开发者限制哪些类可以继承特定的类。这种特性提供了一种更严格的类型控制机制,有助于构建安全、可维护的代码。 密封类的基本特性 * 限制继承:开发者可以指定哪些类可以扩展密封类,从而控制继承层次。 * 增强类型安全性:通过限制子类,密封类可以确保更严格的类型检查。 * 可读性和可维护性:密封类使得继承关系更加清晰,便于理解和维护。 2. Java 22 的增强特性 2.1 跨包继承 在 Java 22 中,密封类的子类可以跨包定义。这意味着开发者可以在不同的包中创建允许的子类,增强了密封类的灵活性。

By Ne0inhk
[C++] 数组 详解

[C++] 数组 详解

前言 大家好啊,zty来更C++的基础之一,那就是数组,作为一个我们做题或者是开发一些内容都不可或缺的一个知识,那我们今天就来深入的去了解一下他,给他来个详解好吧,上一周的多态详解没有到100赞啊,这个博客我想要个100赞可不可以,zty呢最近在冲榜,大家多多支持一下啊,我的目标就是在寒假结束以前冲进前3000好吧,马上正月十五了,祝大家阖家团圆好吧                                                   先   赞   后   看    养   成   习   惯  众所周知,一篇文章需要一个头图,但我家盛产头图                                                   先   赞   后   看    养   成   习   惯   上面那行字怎么读呢,让大家来跟我一起读一遍吧,先~赞~后~看~养~成~习~惯~ 演示用编译器及其标准 Dev C++ 6.7.5

By Ne0inhk
【Java Web学习 | 第14篇】JavaScript(8) -正则表达式

【Java Web学习 | 第14篇】JavaScript(8) -正则表达式

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * JavaScript 正则表达式详解 * 什么是正则表达式🤔 * JavaScript 正则表达式的定义与使用🥝 * 1. 字面量语法 * 2. 常用匹配方法 * test() 方法🍋‍🟩 * exec() 方法🍋‍🟩 * 正则表达式的核心组成部分🐦‍🔥 * 1. 元字符 * 边界符 * 量词 * 字符类 * 2. 修饰符 * 简单示例🍂 JavaScript 正则表达式详解 正则表达式是处理字符串的强大工具,在 JavaScript 中被广泛应用于表单验证、文本处理和数据提取等场景。本文将从正则表达式的基本概念出发,详细介绍其语法规则和实际应用方法。 什么是正则表达式🤔 正则表达式是用于匹配字符串中字符组合的模式,在 JavaScript

By Ne0inhk