Part03 中州养老项目实训 ☀️
Part03 中州养老项目实训 ☀️
今日目标
- 使用
Mybatis
集成SpringBoot操作完成数据的增删改查Java操作数据库 ❤️- 删除用户
- 查询用户
- 删除用户
- 修改用户
- 项目介绍 🍐
- 开发流程介绍
- 开发角色介绍
- 开发环境介绍
1. SpringBoot下集成Mybatis框架 🍐 ✏️❤️
SpringBoot下集成Mybatis框架

MyBatis 是一个持久层框架,用于简化 Java 应用程序与关系型数据库的交互。它通过将 SQL 语句与 Java 代码进行映射,提供了一种方便且灵活的方式来访问和操作数据库。
如果左边的知识,了解了,那么可以进行Mybatis初体验了!!👇
在体验之前,需要做如下准备工作:
- 项目工程创建完成后,在pom.xml文件中的dependencies标签内,导入Mybatis的起步依赖和MySQL驱动依赖
<!-- lombok的依赖,能免除get和set方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<!-- mybatis的起步依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<!-- mysql驱动包依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
2.Idea链接Mysql
按照下图,连接数据库:👇

- 创建mybatis数据库,设置编码为utf-8mb4,创建user表,并导入一下假数据
-- 创建数据库 mybatis
create database if not exists mybatis;
-- 删除原有的user表
DROP TABLE IF EXISTS `user`;
-- 创建user表
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL UNIQUE,
`password` varchar(32) NOT NULL DEFAULT '12345678',
`age` int(10) NOT NULL,
`hobby` varchar(50) DEFAULT NULL,
`description` varchar(200) NOT NULL,
`department` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('8', '赵灵儿', '12345678', '20', '阵法、法术修炼', '纯真善良的女子,拥有强大的阴阳之力', '阴阳家');
INSERT INTO `user` VALUES ('9', '楚留香', '12345678', '32', '剑术、侠义行侠', '风流倜傥的豪客,以智慧和剑术征服江湖', '江湖人士');
INSERT INTO `user` VALUES ('10', '白浅', '12345678', '26', '宫廷舞蹈、仙法修炼', '美丽高贵的仙子,守护爱与正义的力量', '青丘派');
INSERT INTO `user` VALUES ('11', '苏明玉', '12345678', '29', '医术、家族事务', '聪明伶俐的女医生,心系家族兴衰', '苏家');
INSERT INTO `user` VALUES ('13', '李逍遥', '12345678', '28', '剑术、侠义行侠', '潇洒自如的剑客,为爱与正义奋斗', '天墉城');
INSERT INTO `user` VALUES ('14', '陆展元', '12345678', '31', '龙族法术、海洋探险', '勇敢善良的龙族王子,探索海洋奥秘', '东海龙宫');
INSERT INTO `user` VALUES ('18', '萧炎', '12345678', '25', '功夫、修炼', '机缘巧合下拥有强大火焰之力的少年', '草庙村');
INSERT INTO `user` VALUES ('19', '陆九淳', '12345678', '29', '家族事务、剑术修炼', '家族责任重于一切的江湖少年', '陆家');
INSERT INTO `user` VALUES ('20', '韩立', '12345678', '22', '灵力修炼、阵法研究', '机智聪明的年轻修士,掌握神奇的法术', '韩家');
INSERT INTO `user` VALUES ('21', '顾惜朝', '12345678', '28', '法术修炼、守护门派', '心地善良的女子,为守护门派而战', '古玄门');
INSERT INTO `user` VALUES ('22', '九霄真人', '12345678', '35', '仙法修炼、教导弟子', '威严正直的仙人,指导后辈修仙道路', '蓝霞宫');
INSERT INTO `user` VALUES ('23', '姬昌', '12345678', '33', '阴阳术、仙法修炼', '智勇双全的江湖人物,掌握阴阳之力', '太阴派');
INSERT INTO `user` VALUES ('24', '西门吹雪', '12345678', '30', '剑术、侠义行侠', '风流倜傥的剑客,执着追求剑道境界', '独孤家');
INSERT INTO `user` VALUES ('25', '夏冰', '12345678', '26', '魔法修炼、冰雪之力', '美丽神秘的女子,掌握冰雪之力', '幻冥宗');
INSERT INTO `user` VALUES ('26', '杨影枫', '12345678', '27', '暗器、侠义行侠', '冷酷无情的刺客,为正义而战', '影家');
INSERT INTO `user` VALUES ('27', '白素素', '12345678', '24', '文学创作、人界事务', '善良纯真的女子,用文字记录人间百态', '人界');
INSERT INTO `user` VALUES ('28', '独孤剑', '12345678', '32', '剑术、侠义行侠', '心系家族的剑客,剑法高超', '独孤家');
INSERT INTO `user` VALUES ('29', '楚九霄', '12345678', '28', '阵法、家族事务', '机智聪明的年轻人,心系家族荣耀', '楚家');
INSERT INTO `user` VALUES ('30', '谢晓峰', '12345678', '31', '拳脚功夫、江湖恩怨', '正直勇敢的江湖豪杰,忠于兄弟情义', '铁血帮');
INSERT INTO `user` VALUES ('31', '叶孤城', '12345678', '29', '剑术、侠义行侠', '冷酷无情的剑客,追求剑道极致', '武境城');
INSERT INTO `user` VALUES ('32', '李逸风', '12345678', '25', '修炼、探险', '热血青年,勇往直前探索未知世界', '蓝枫大陆');
INSERT INTO `user` VALUES ('33', '萧霜', '12345678', '27', '冰雪法术、守护宗门', '冷艳高傲的女子,守护冰霜宗的利益', '冰霜宗');
INSERT INTO `user` VALUES ('34', '楚玉峰', '12345678', '30', '家族事务、阵法修炼', '机智聪明的年轻人,家族责任重于一切', '楚家');
INSERT INTO `user` VALUES ('35', '陆雪琪', '12345678', '24', '法术、修行', '美丽冷傲的仙子,修炼法术追求修行境界', '青云门');
INSERT INTO `user` VALUES ('36', '明月心', '12345678', '26', '琴音、舞蹈', '温柔善良的女子,以音乐传递爱与希望', '云裳派');
INSERT INTO `user` VALUES ('37', '程灵素', '12345678', '27', '仙法修炼、仙岛事务', '温柔善良的仙子,守护仙岛和平', '蓬莱仙岛');
INSERT INTO `user` VALUES ('38', '韩非', '12345678', '23', '学术研究、阵法修炼', '聪明睿智的年轻人,研究阵法和学术', '韩家');
INSERT INTO `user` VALUES ('40', '戚芳', '12345678', '23', '武功、家族事务', '机智勇敢的女子,为家族荣誉而战', '戚家');
INSERT INTO `user` VALUES ('41', '楚轩辕', '12345678', '28', '家族事务、剑术修炼', '家族责任重于一切的剑客', '楚家');
INSERT INTO `user` VALUES ('42', '秦王', '12345678', '35', '政务、战争', '智勇双全的帝王,统一六国的志向', '秦国');
INSERT INTO `user` VALUES ('43', '李寻欢', '12345678', '30', '剑术、侠义行侠', '聪明机智的江湖人物,正义心十足', '大宛城');
INSERT INTO `user` VALUES ('44', '唐三藏', '12345678', '45', '佛法修行、西行取经', '慈悲心肠的高僧,带领徒弟西天取经', '大唐');
INSERT INTO `user` VALUES ('45', '吴青烟', '12345678', '26', '法术修行、江湖事务', '冷艳高傲的女子,修炼法术追求江湖大业', '青云门');
- 根据数据库表结构,创建User类,属性和数据库user表的字段对应

- 在application.yml配置文件下(如果没有在resources下创建即可),配置数据库信息(驱动、链接、用户名、密码)
配置文件后缀名.yaml .yml都可以 点击查看详细步骤
# 顶格写
spring:
#数据库连接信息
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
username: root
password: 1234
#Mybatis配置
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
- 创建UserMapper接口,添加@Mapper注解
@Mapper
public interface UserMapper{
}
需求1:查询id为30的用户,返回浏览器可以先自己分析
点击查看详细步骤
- 在UserMapper接口中,创建getById方法,并且在方法上添上注解@Select,写上sql语句。

- 在UserController.java中自动注入
UserMapper
接口的代理对象,并在getById方法中调用这个对象的getById方法,输出结果。

- 重新启动程序,访问http://localhost:8848/user?id=30 观察返回值是否为JSON格式。

需求2:查询名字叫 陆雪琪的用户,返回浏览器
点击查看详细步骤
- 在UserMapper接口中,创建selectByName方法,并且在方法上添上注解@Select,写上sql语句。

在UserController.java中自动注入
UserMapper
接口的代理对象,并在selectByName方法中调用这个对象的selectByName方法,输出结果。重新启动程序,访问http://localhost:8080/selectbyname?name=陆雪琪 观察返回值是否为JSON格式。
需求3:爱好中含有 "法术" 的用户,返回浏览器
点击查看详细步骤
在UserMapper接口中,创建selectLikeName方法,并且在方法上添上注解@Select,写上sql语句。
在UserController.java中自动注入
UserMapper
接口的代理对象,并在selectLikeName方法中调用这个对象的selectLikeName方法,输出结果。重新启动程序,访问http://localhost:8080/selectlikename?hobby=法术 观察返回值是否为JSON格式。
需求4:删除用户为 韩立的用户,返回 ok 字符串
点击查看详细步骤
在UserMapper接口中,创建deleteByName方法,并且在方法上添上注解@Delete,写上sql语句。
在UserController.java中自动注入
UserMapper
接口的代理对象,并在deleteByName方法中调用这个对象的deleteByName方法,输出结果。重新启动程序,访问http://localhost:8080/deleteByName?name=韩立 观察返回值是否为JSON格式。
需求5:将id为36的用户,hobby修改为 听焱哥上课,返回 ok 字符串
点击查看详细步骤
在UserMapper接口中,创建updateById方法,并且在方法上添上注解@Update,写上sql语句。
在UserController.java中自动注入
UserMapper
接口的代理对象,并在updateById方法中调用这个对象的updateById方法,输出结果。重新启动程序,访问http://localhost:8080/updatebyid?id=36&hobby=听焱哥上课 观察返回值是否为JSON格式。
总结
课堂作业
- 如果你完成上面的5个需求,那么你掌握了SpringBoot集成Mybatis的操作 🎤
2. 软件开发整体介绍 🍐
软件开发整体介绍
作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 三个方面,来整体上介绍一下软件开发。
软件开发流程 🍐

岗位/角色 | 职责/分工 |
---|---|
项目经理 | 对整个项目负责,任务分配、把控进度 |
产品经理 | 进行需求调研,输出需求调研文档、产品原型等 |
UI 设计师 | 根据产品原型输出界面效果图 |
架构师 | 项目整体架构设计、技术选型等 |
开发工程师 | 功能代码实现 |
测试工程师 | 编写测试用例,输出测试报告 |
运维工程师 | 软件环境搭建、项目上线 |
角色分工是在一个项目组中比较标准的角色分工, 但是在实际的项目中, 有一些项目组由于人员配置紧张, 可能并没有专门的架构师或测试人员, 这个时候可能需要有项目经理或者程序员兼任
软件环境 🍐

1). 开发环境(development)
我们作为软件开发人员,在开发阶段使用的环境,就是开发环境,一般外部用户无法访问 。
比如,我们在开发中使用的 MySQL 数据库和其他的一些常用软件,我们可以安装在本地, 也可以安装在一台专门的服务器中, 这些应用软件仅仅在软件开发过程中使用, 项目测试、上线时,我们不会使用这套环境了,这个环境就是开发环境。
2). 测试环境(testing)
当软件开发工程师,将项目的功能模块开发完毕,并且单元测试通过后,就需要将项目部署到测试服务器上,让测试人员对项目进行测试。那这台测试服务器就是专门给测试人员使用的环境, 也就是测试环境,用于项目测试,一般外部用户无法访问 。
3). 生产环境(production)
当项目开发完毕,并且由测试人员测试通过之后,就可以上线项目,将项目部署到线上环境,并正式对外提供服务, 这个线上环境也称之为生产环境。
总结
课堂作业
- 请回答软件的开发流程是什么?🎤
- 请回答软件开发过程中,有哪些角色,以及实际工作中这些角色都需要招聘吗?
- 测试环境和生产环境有什么区别?
3. 项目介绍
3.1 整体业务流程 🍐
整体业务流程
中国老龄化程度加深,我国老龄事业和养老服务体系的发展得到了国家的高度重视,在国家政策的支持下,我国智慧养老产业主体持续增多,产业链不断整合,发展前景较好。我国正在形成一个多元化“互联网+养老”的智慧老年护理服务系统,智慧养老是我国的必然趋势
中州养老系统为养老院量身定制开发专业的养老管理软件产品;涵盖来访管理、入退管理、在住管理、服务管理、财务管理等功能模块,涉及从来访参观到退住办理的完整流程。

项目原型地址:https://rp-java.itheima.net/zhyl/
中州养老项目分为两端,一个是管理后台,另外一个是家属端
- 管理后台:养老院员工使用,入住、退住,给老人服务记录等等
- 家属端:养老院的老人家属使用,查看老人信息,缴费,下订单等等
数据访问流程: 👇
总结
课堂作业
- 微信小程序有什么优势!!🎤
- 如果要你设计一个养老院管理系统,你能想到什么功能?
- 点击阅读在线原型文档,了解中州养老的业务
3.2 实训说明和任务 🍐
实训说明和任务

- 整个中州养老的前后端代码要全部实现,需要三个月以上的时间
- 由于本次实训时间所限,没有办法将整个中州养老的所有代码实现,所以咱们会从项目中挑选部分功能进行实现,把我们本次实训所学习的技术应用起来。
- 本次实训选取中州养老项目家属端 的部分功能进行实现
- 其中前端微信小程序部分已经实现好 了,我们只需要把提供好的代码运行起来,配合后端完成测试及效果展示即可。
将来要实现的家属端的功能包含如下:👇
- 预约模块: ✏️ 🎯
- 预约列表分页查询
- 新增预约
- 取消预约
- 房型模块: 🎯
- 查询所有房型
- 护理服务模块: 🎯
- 护理服务列表分页查询
- 护理服务详情查询
实训任务
1 边讲边练
参照接口文档,完成预约模块相关的三个接口
2 自己完成
参照接口文档,完成房型模块和护理服务模块的相关接口