分布式医疗挂号系统(一) |
您所在的位置:网站首页 › 预约挂号服务内容 › 分布式医疗挂号系统(一) |
本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统。本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果、全局异常、全局日志进行了统一处理。 同时,为了方便进行访问测试,还整合了Swagger2工具,这些通用的模块中,除了全局日志被放在医院设置微服务模块的配置资源中,其余都统一被抽取在common模块中。具体实现可参考下面文章: 医院设置微服务 | 模块搭建医院设置微服务 | 接口开发通用模块 | 整合Swagger2通用模块 | 统一返回结果、统一异常处理、统一日志处理作者:Hudie 微信公众号/CSDN博客:编程一只蝶 公众号文章会比博客早1到2天,欢迎关注,每天开心~ 项目已开源至gitee:https://gitee.com/guo-qianliang/yygh_parent 项目已开源至github:https://github.com/Guoqianliang/yygh_parent 医院设置微服务模块搭建 一、项目模块划分图二、开发前的准备工作1.医院设置数据库表设计2.搭建医院设置微服务模块 三、医院设置微服务模块开发步骤1:生成表对应的实体类步骤2:创建Mapper步骤3:创建Service步骤4:创建Controller 四、测试开发环境 一、项目模块划分图本系列文章开始介绍从0开始搭建一个《基于分布式的医疗挂号系统》,下图是初步模块划分图,可根据此图在IDEA中创建出项目初步结构。其中父工程是一个Spring工程,父模块是Maven工程,注意两者都需要使用pom方式进行打包。 二、开发前的准备工作 1.医院设置数据库表设计在《基于分布式的医疗预约挂号系统》中,医院设置表yygh_hosp主要是用来保存每个医院的一些基本信息,每个医院的信息就是一条记录。这条记录中保存了医院编号、接口调用相关的签名等等。只有开通了医院设置,才可以进行医院记录的上传。所以,在医院设置模块部分,我们所开发的功能就是基于单表的一个CRUD、发送签名信息等基本功能。 # 创建数据库: yygh_hosp CREATE DATABASE IF NOT EXISTS `yygh_hosp` CHARACTER SET utf8mb4; USE `yygh_hosp`; # 创建表:hospital_set CREATE TABLE `hospital_set` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `hosname` VARCHAR(100) DEFAULT NULL COMMENT '医院名称', `hoscode` VARCHAR(30) DEFAULT NULL COMMENT '医院编号', `api_url` VARCHAR(100) DEFAULT NULL COMMENT 'api基础路径', `sign_key` VARCHAR(50) DEFAULT NULL COMMENT '签名秘钥', `contacts_name` VARCHAR(20) DEFAULT NULL COMMENT '联系人', `contacts_phone` VARCHAR(11) DEFAULT NULL COMMENT '联系人手机', `status` TINYINT(3) NOT NULL DEFAULT '0' COMMENT '状态', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT(3) NOT NULL DEFAULT '0' COMMENT '逻辑删除(1:已删除,0:未删除)', PRIMARY KEY (`id`), UNIQUE KEY `uk_hoscode` (`hoscode`) COMMENT '唯一约束(医院编号必须唯一)' ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='医院设置表';创建好后的数据库表如下: 2.搭建医院设置微服务模块在servie父模块中创建service_hosp模块,为service_hosp模块添加如下配置信息: # 服务端口 server.port=8201 # 服务名 spring.application.name=service-hosp # 环境设置:dev、test、prod spring.profiles.active=dev # mysql数据库连接 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://[ip地址]:3306/yygh_hosp?characterEncoding=utf-8&useSSL=false spring.datasource.username=[数据库名称] spring.datasource.password=[数据库密码] #返回json的全局时间格式 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8并为此微服务模块创建启动类: package com.gql.yygh.hosp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @Description: 启动类 * @author Guoqianliang * @date 20:17 - 2021/4/3 */ @SpringBootApplication public class ServiceHospApplication { public static void main(String[] args) { SpringApplication.run(ServiceHospApplication.class, args); } }在测试前,将service模块中下图所示的三个依赖注释掉,这些现在还用不到。若不注释,启动时项目会报错。 运行此微服务,发现项目成功启动: 至此,医院设置数据库表,以及医院微服务模块搭建成功,后续就可以在此基础上进行接口的编写了。 三、医院设置微服务模块开发 步骤1:生成表对应的实体类此处在编写实体类时使用了一个父子类来做映射,这样做是为了将公用的字段给抽取出来。 在继承中,子类继承父类就拥有了父类的全部非私有属性。 步骤2:创建MapperMyBatis-Plus在Mapper层为我们提供了一个BaseMapper接口,继承这个接口,即可获得CRUD功能。 mapper一般对应一个xml配置文件,下面对xml的开发规范进行补充: mapper接口的地址通过.xml中的namespace属性引入。mapper接口中方法名和.xml中id一致。mapper接口中方法输入参数类型和.xml中statement的parameterType指定的类型一致。mapper接口中方法返回值类型和.xml中statement的resultType指定的类型一致。由于Mapperapper是一个接口,接口动态生成实现类的对象默认是找不到的,需要添加MapperScan才能找到动态生成的对象。可以将MapperScan写在启动类上,也可以如下所示编写一个配置类进行统一管理。 package com.gql.yygh.hosp.config; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Configuration; /** * @Description: 医院配置 * @author Guoqianliang * @date 9:42 - 2021/4/4 */ @Configuration @MapperScan("com.gql.yygh.hosp.mapper") public class HospConfig { } 步骤3:创建ServiceMyBatis-Plus在Service层为我们提供了一个IService接口和一个ServiceImpl实现类,我们的Service接口继承IService接口、我们的实现类继承ServiceImpl实现类。就可以让MyBatis-Plus在Service层帮我们去调用Mapper,直接使用封装号的baseMapper就能完成调用。 步骤4:创建Controller创建Controller,在其中装配Service即可,后续在Controller中调用Service层的方法,进而调用数据库即可实现功能。 /** * @Description: Controller * @author Guoqianliang * @date 0:16 - 2021/4/4 */ @RestController @RequestMapping("/admin/hosp/hospitalSet") public class HospitalSetController { /** * 注入Service */ @Autowired private HospitalSetService hospitalSetService; } 四、测试开发环境为了验证环境的正确性,下面对微服务整体进行测试,我们在Controller中编写一个查询数据库所有信息的方法。 @RestController @RequestMapping("/admin/hosp/hospitalSet") public class HospitalSetController { /** * 注入Service */ @Autowired private HospitalSetService hospitalSetService; /** * 测试:查询医院设置表中的所有记录 * @return list */ @GetMapping("findAll") public List findAllHospitalSet() { List list = hospitalSetService.list(); return list; } }手动在yygh_hosp数据库hospital_set表中添加一条记录: 将微服务跑起来,在浏览器访问url:http://localhost:8201/admin/hosp/hospitalSet/findAll,成功获取到json格式的信息: 至此,医院设置微服务模块就搭建成功了,接下来就可以在此环境上进行接口的开发。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |