Part04 中州养老项目实训 ☀️
Part04 中州养老项目实训 ☀️
今日目标
- Idea插件的使用
- 取消预约
- 实战!!
1. 接口开发
1.1 取消预约 🎯
新增预约
代码操作
开发流程:
- 编写Controller代码
- 编写Mapper接口和Mapper映射配置文件
- 微信小程序测试
1 在ReservationController中添加方法

注意: 可以通过@Autowired注解,从IOC容器中获取指定类型的对象并赋值给成员变量
3 在ReservationMapper接口中添加方法

ReservationMapper.xml映射文件的内容

微信小程序测试

总结
课堂作业
- 参考接口文档和上述步骤,完成取消订单🎤
2. 接口开发实战
开发流程:
- 查看接口文档,明确入参和出参
- 编写Controller代码
- 编写Mapper接口和Mapper映射配置文件
- 微信小程序测试
2.1 查看所有房型 🎯
查看所有房型
代码操作
开发流程:
- 编写Controller代码
- 编写Mapper接口和Mapper映射配置文件
- 微信小程序测试
1 在Controller中添加方法

注意: 可以通过@Autowired注解,从IOC容器中获取指定类型的对象并赋值给成员变量
3 在Mapper接口中添加方法
Mapper.xml映射文件的内容
微信小程序测试
2.2 分页查询护理服务列表 🎯
分页查询护理服务列表
代码操作
开发流程:
- 编写Controller代码
- 编写Mapper接口和Mapper映射配置文件
- 微信小程序测试
1 在Controller中添加方法

注意: 可以通过@Autowired注解,从IOC容器中获取指定类型的对象并赋值给成员变量
3 在Mapper接口中添加方法
Mapper.xml映射文件的内容
微信小程序测试
2.3 护理服务详情查询 🎯
护理服务详情查询
代码操作
开发流程:
- 编写Controller代码
- 编写Mapper接口和Mapper映射配置文件
- 微信小程序测试
1 在Controller中添加方法

注意: 可以通过@Autowired注解,从IOC容器中获取指定类型的对象并赋值给成员变量
3 在Mapper接口中添加方法
Mapper.xml映射文件的内容
微信小程序测试
额外拓展
3 拓展-上线项目3.1 Sealos云操作系统介绍
Sealos云操作系统介绍

Sealos DevBox 是一个一站式云开发平台,将在线开发、测试和生产环境完美集成。只需一键点击,即可快速创建所需的开发环境和数据库依赖。开发者可以使用熟悉的本地 IDE(如 VSCode、Cursor、JetBrains 等)进行开发,同时享受简化的环境配置和自动化的应用部署体验。平台支持所有主流编程语言和框架,包括 Node.js、Python、Java、Go、PHP、Ruby 等,以及各类前端框架如 React、Vue、Angular 等。
代码操作

DevBox:一站式云开发平台,支持在线开发、测试和生产环境,支持所有主流编程语言和框架,包括 Node.js、Python、Java、Go、PHP、Ruby 等,以及各类前端框架如 React、Vue、Angular 等。
数据库:支持 MySQL、PostgreSQL、MongoDB 等主流数据库,支持在线管理、备份和恢复。
对象存储:支持存储和检索各种类型的数据,包括图片、视频、音频等。

有了这些功能,意味着本地电脑上都不需要安装对应的软件,就可以进行项目开发了
总结
课堂作业
- 为什么要使用Sealos云操作系统?有什么好处?🎤
- Sealos云操作系统常用有哪些功能?🎤
- Sealos云操作系统是免费的吗?🎤
3.2 上线项目
上线项目
代码操作
在sealos中创建数据库,并使用Navicat导入数据
1. 在sealos中创建yangeitdb数据库
2. 打开外网访问,支持外网访问
- 链接Navicat,输入数据库链接信息,测试连接是否成功。
Navicat是一款数据库管理工具,可以连接MySQL、Oracle、SQL Server等数据库,方便用户进行数据库操作。自行下载安装,百度搜索即可。

- 操作Navicat,执行sql语句,观察表和数据是否ok

3.插入操作:👇
4.数据插入成功:👇
记录外网或者内网地址:稍后要在springboot的yml配置文件中使用 👈
- 将项目中的yml配置文件中的数据库链接地址修改为外网地址
# 修改端口为9995
server:
port: 9995
# 顶格写
spring:
#数据库连接信息
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://dbconn.sealoshzh.site:31098/zzyl_user_client?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
username: root
password: 8pbdgf24 # 如果你的密码是0开头的 0123 那么必须用但引号包裹 '0123'
#Mybatis配置
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启日志
map-underscore-to-camel-case: true # 开启驼峰命名转换
- 点击maven的package命令,将项目打包成jar包,将jar包上传到服务器,通过命令启动项目
Trae 是国内首个 AI IDE,深度理解中文开发场景
- 在sealos中创建一个java项目,并且使用Trae打开这个项目


2. 将jar拷贝到目录中(就是远程服务器的目录,不是本地的目录)
- 修改entrypoint.sh 文件的内容,改为
java -jar ./zzyl-1.0-SNAPSHOT.jar
4.在sealos中发布版本

配置发布信息

修改微信小程序的配置文件,将域名改为外网地址



4. 优化项目
1. Redis操作
SpringCache和Redis操作
前面我们已经实现了移动端房型查看功能,且放在首页,因此会被用户频繁访问,进而对数据库查询操作。在高并发 的情况下,频繁查询数据库会导致系统性能下降 ,服务端响应时间增长。现在需要对此方法进行缓存优化,提高系统的性能。(如下图)

SpringCache是一个框架,实现了基于注解的缓存功能 ,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。
Spring Cache 只是提供了一层抽象,底层可以切换不同的 cache 实现。具体就是通过CacheManager 接口 来统一不同的缓存技术。CacheManager 是 Spring 提供的各种缓存技术抽象接口。
针对不同的缓存技术需要实现不同的 CacheManager:
CacheManager | 描述 |
---|---|
EhCacheCacheManager | 使用 EhCache 作为缓存技术 |
GuavaCacheManager | 使用 Google 的 GuavaCache 作为缓存技术 |
RedisCacheManager | 使用 Redis 作为缓存技术 |
在 SpringCache 中提供了很多缓存操作的注解,常见的是以下的几个:
注解 | 说明 |
---|---|
@EnableCaching | 开启缓存注解功能 |
@Cacheable | 在方法执行前 spring 先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacheEvict | 将一条或多条数据从缓存中删除 |
在 spring boot 项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching
开启缓存支持即可。
例如,使用 Redis 作为缓存技术,只需要导入 Spring data Redis 的 maven 坐标即可。
代码操作
由于 SpringCache 的基本功能是 Spring 核心(spring-context)中提供的,所以目前我们进行简单的 SpringCache 测试,是可以不用额外引入其他依赖的。 可以检查是否导入了下列依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
1). 引导类上加@EnableCaching
在引导类上加该注解,就代表当前项目开启缓存注解功能。

在 XXXController 的 list 方法上加入@Cacheable
注解
在进行数据查询时,我们需要根据roomCache和status状态进行查询,所以我们在缓存数据时,可以将roomCache和status状态组合起来作为key,如: roomCache::1
@RestController
public class RoomTypeController {
@Autowired
private RoomTypeMapper roomTypeMapper;
@GetMapping("/customer/roomTypes")
@Cacheable(value = "roomCache",key = "#status")
public Result<List<RoomType>> findAll(Integer status){
List<RoomType> rts = roomTypeMapper.select(status);
//System.out.println(rts);
return Result.success(rts);
}
}
为了保证数据库中数据与缓存数据的一致性,在我们添加房间类型或者房间类型数据之后,需要清空当前房间类型缓存的全部数据。那么@CacheEvict
注解如何清除某一份缓存下所有的数据呢,这里我们可以指定@CacheEvict
中的一个属性 allEnties,将其设置为 true 即可。
@PostMapping
@CacheEvict(value = "roomCache",allEntries = true) //清除roomCache名称下,所有的缓存数据
public Result 增删改方法(.....) {
}

上述确实能解决数据库频繁查询的问题,但是如果idea重启,缓存就消失了,下次启动idea得重新构建缓存,有没有一种缓存技术可以直接避免这种情况,提高缓存的可用性尼?
使用redis非关系型数据库即可
- 安装Redis,在非中文的路径下,解压焱哥发在微信群里的压缩包,点击运行startredis.bat 即可

点击运行startredis.bat 即可
- 在项目的pom.xml中添加redis依赖,点击右上角的刷新
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.4.5</version>
</dependency>

- 在项目的yml文件中添加redis链接配置
spring:
redis:
host: localhost
port: 6379
database: 0


反复点击发现,不会查询数据库

通过redis可视化软件,可以查看已经存入的数据,且关闭idea数据依然存在