医院信息化与智能化系统(3)

医院信息化与智能化系统(3)

这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的代码

预约挂号微服务模块搭建

1、构建父工程(yygh-parent)

在Maven的pom.xml中,<packaging>pom</packaging>指定了该项目的打包类型为 POM。这意味着这个项目是一个父项目或聚合项目,而不是一个可执行的JAR或WAR文件。

其作用是为了管理依赖版本以及公共依赖

通过Spring Initializr创建项目:添加依赖项

好处:

  • 自动重启: 当你修改代码并保存文件时,DevTools 会自动重启应用,这样你不必手动重启服务,提高开发效率。
  • 快速热部署: 在开发模式下,DevTools 允许快速查看代码更改的效果,无需每次都重新启动应用。
  • LiveReload: 与浏览器配合,实时刷新网页,方便前端开发。
  • 增强配置元数据: 为你的配置类生成元数据,使得 IDE(如 IntelliJ IDEA)能够提供智能提示和代码补全功能。
  • 类型安全的配置: 通过生成的元数据,确保配置项的类型和名称的正确性,避免常见的配置错误。
    在这里插入图片描述

此处还会出现一个问题:创建好的springboot项目根本没有spring-boot-starter-parent

原因: 因为创建springboot工程的时候,使用的是阿里云提供的网址,初始化项目的时候,官网的采用的是继承的parent标签。而阿里云是直接通过引用依赖,所以看不到parent标签!(转自此处)

解决方案: 自行添加<parent>标签,记住,这里的版本一定要和你的spring-boot设置的版本一样

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.16</version>
</parent>

后续就是添加相关依赖,这里主要描述pom内标签的几个作用:

<parent> 标签在 Maven 项目中用于声明一个项目的父 POM(Project Object Model)。父 POM 提供了一组可以被子项目继承的配置和依赖,从而减少重复配置,简化多模块项目的管理。可以继承的包括:

  1. 依赖版本(通过 <dependencyManagement>)。
  2. 构建设置(通过 <build>
  3. 插件配置(通过 <pluginManagement>
  4. 通用属性(通过 <properties>

<dependencyManagement> 主要用于在父项目或父 POM 中定义依赖的版本和范围,但并不会将依赖自动引入子项目。子项目需要显式声明依赖项.
<dependencies> 标签用于直接声明项目中需要的依赖项。这些依赖会立即被添加到项目的构建路径中,并且在构建时自动下载和使用。

<properties> 标签,你可以定义一些全局的变量,如 Java 版本、字符编码、依赖的版本等,便于项目的统一配置和维护。

<build> 标签出现在 pom.xml 文件中,用于管理项目的构建配置包括:

  1. 项目编译、测试和打包的行为定义。
  2. 配置构建过程中的插件及其参数。
  3. 自定义项目输出的路径和文件名称等。

位于 <build> 标签下:

  1. <pluginManagement>:用于为子项目或模块定义插件的默认配置。子项目要想使用这些插件,必须显式声明插件。它只管理插件,而不会在没有声明的情况下自动应用插件。

  2. <plugins>:用于在当前项目或子项目中直接应用插件。这里声明的插件会自动应用,并参与项目的构建过程。

  3. <plugin> ,用于定义和配置 Maven 插件。Maven 插件是一组可以在项目构建过程中执行的任务,例如编译、打包、测试等。通过插件,你可以扩展 Maven 的默认行为,或引入特定的功能。

2、搭建common父模块

在这里插入图片描述
yygh-parent工程下创建子工程模块common,会遇到一个问题:找不到常规Maven模块创建,似乎只提供了Maven Archetype模版创建,其实是可以创建普通Maven模块的,在新建模块里。 此处参考
在这里插入图片描述
添加依赖,对swagger依赖项进行说明

使用 Swagger 的功能:

  • 生成 API 文档:通过注解生成自动化的 API 文档,无需手动编写。
  • 在线测试:Swagger 提供可视化的接口文档页面,可以直接在页面上进行 API 请求测试。
  • 代码生成:Swagger 可以根据文档生成多语言的客户端和服务端代码。

搭建common-util、service-util(common子模块)先统一安装对应依赖 (后续还有再补充)

3、搭建model、Service父模块

在这里插入图片描述
在这里插入图片描述
搭建过程如common,不再赘述。

4、Gitee使用

打开https://gitee.com/网址

点击创建仓库,选择是否开源、`仓库名称

复制gitee码云Https连接类似于:https://gitee.com/xxxx/yygh_parent.git

创建本地仓库: 在Idea工具栏上方点击VCS -->创建Git仓库

建立远程仓库并上传代码步骤

第一步: 右键项目名称,在Git中点击管理远程,将之前复制的码云的URL粘贴,创建时,需要填写你码云的账号密码

这里要注意,注册账号时的用户名和这里的账号可能不一样,以https://gitee.com/xxxx/yygh_parent.git为准的话,账号就是xxxx,密码一样

第二步: 右键项目名称,在Git中点击添加

第三步: Git ->提交目录,在打开的窗口中选择要上传到本地仓库的代码并添加注释后提交并推送到远程仓库中。

pull:首先从远程仓库获取最新的提交记录,再将远程仓库中的更新合并到本地当前分支。

commmit: 是将已添加到暂存区(staging area)的更改保存到本地仓库的历史记录中。提交的内容只在本地仓库中进行保存,并不会影响远程仓库。

push:是将本地仓库中的提交推送到远程仓库

在这里插入图片描述

5、医院设置需求

医院设置功能的主要作用是保存医院的基本信息,确保每个医院开通后可以参与后续的流程。

具体表结构:

字段名描述备注
id编号自增
hosname医院名称
hoscode医院编号(平台分配,全局唯一,API接口必填信息)
api_url医院回调的基础URL(如:预约下单,调用该地址下单)
sign_key双方API接口调用的签名Key,由平台生成
contacts_name医院联系人姓名
contacts_phone医院联系人手机
status状态(锁定/解锁)默认值:01表示可用于连接
create_time创建时间默认值:CURRENT_TIMESTAMP
update_time更新时间默认值:CURRENT_TIMESTAMP,更新时修改
is_deleted逻辑删除(1:已删除,0:未删除)默认值:0

6、搭建医院模块service-hosp

第一步: 修改pom.xml,添加依赖

第二步: 添加配置文件application.properties设置数据库、Mapper等信息

其中配置mapper-locations是为了告诉 MyBatis-Plus 框架,在哪个路径下可以找到 XML 文件,这些文件定义了数据库操作的 SQL 语句。

第三步: 添加启动类,启动类模块统一在model模块创建

第四步: 添加Mapper接口,在Mapper接口继承BaseMapper时需要指定实体类(HospitalSet),所以必须在pom.xml添加对model模块的依赖。最后并在Mapper文件夹下方创建xml文件夹,用于存储xml文件

        <dependency>
            <groupId>com.xxx</groupId>
            <artifactId>model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

其中添加 mapper 接口是为了在 MyBatis 或 MyBatis-Plus 中定义与数据库的交互逻辑,它提供了将 Java 方法与 SQL 语句进行映射的机制。

第五步: 添加service接口及实现类

创建HospitalSetService接口(封装业务逻辑),继承IService接口,它集成了一些通用的服务方法。[这里接口填泛型,填的是实体类HospitalSet]

实现该Service接口,并可以调用 Mapper 接口。

@Service
public class HospitalSetServiceImpl extends ServiceImpl<HospitalSetMapper, HospitalSet>implements HospitalSetService {
@Autowired
private HospitalSetMapper hospitalSetMapper;
}

ServiceImpl 是 MyBatis-Plus 提供的一个基础服务实现类,它已经封装好了常见的 CRUD(增删改查)操作,开发者只需继承这个类,就可以自动拥有这些基本功能,而无需每次都手动实现。

ServiceImpl 使用了两个泛型参数:

<M extends BaseMapper<T>, T> implements IService<T>

  • M(Mapper 类型):表示对应的 Mapper 接口,通常继承自 BaseMapper。
  • T(实体类型):表示对应的实体类,通常对应数据库中的某张表。

这里会不会有一个疑问:既然服务层实现类继承了serviceImpl,又继承了 服务类接口,那为什么服务类接口还需要继承IService接口呢?

从 IService 继承的 CRUD 方法可以直接复用,避免在每个实现类中重复编写;可以在 Service 接口中定义额外的业务方法,使其不仅仅限于基本的 CRUD 操作;未来如果需要替换 ServiceImpl,只需要修改实现类,接口层不用动,保持系统的解耦。

第六步: 添加controller

这里介绍这两个注解:

@RestController:它的作用等同于 @Controller 和 @ResponseBody 的组合

  • @Controller:用于定义一个控制器类,用来接收和处理 HTTP 请求。
  • @ResponseBody:表示该方法的返回值直接作为 HTTP 响应体,而不是返回一个视图(如 JSP 页面)。通常用来返回 JSON、XML 等格式的数据。

@RequestMapping("/admin/hosp/hospitalSet") 表示这个控制器类处理所有以 /admin/hosp/hospitalSet 开头的请求路径。

这里我在运行配置类Main时,出现了一个报错:

java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried

这个错误表明 Spring Boot 应用在尝试连接 Nacos 服务时出现了 Connection refused 的错误。我的解决方法是,把关于nacos的依赖项先注释掉。

后续讨论如何在Controller中添加CRUD方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/895382.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 最小路径和

这段代码解决的是LeetCode第64题“最小路径和”&#xff0c;其核心思想是动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;。以下是算法的具体解释&#xff1a; 1. 问题描述&#xff1a; 我们给定一个包含非负整数的 m x n 网格&#xff08;grid&…

智慧园区能带来哪些便利?

所谓智慧园区&#xff0c;是指通过信息化手段&#xff0c;实现园区内各项业务的数字化和智能化管理。园区管理者可以利用智能化平台实时监控各项运营情况&#xff0c;如能源使用、安全监控和物流运输等&#xff0c;及时调整管理策略&#xff0c;提高运营效率。智慧园区利用大数…

基于SSM+微信小程序的打印室预约管理系统(打印2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的打印室预约管理系统实现了管理员和用户两个角色。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;附近打印店管理&#xff0c;文件打印管理&#xff0c;当…

【配色网站分享】

个人比较喜欢收藏一些好看的插画、UI设计图和配色&#xff0c;于是有了此篇&#xff0c;推荐一些配色网站&#xff0c;希望能对自己和大家有些帮助。 1.uiGradients 一个主打渐变风网站&#xff0c;还可以直接复制颜色。 左上角的“show all gradients”可以查看一些预设的渐…

redis的发布订阅模式

1.发布订阅模式的结构 结合上图和消息中间件&#xff0c;可以将channel和消息中间件中的topic主题对应起来 2. Redis发布订阅功能 &#xff08;1&#xff09;发送消息 Redis采用PUBLISH命令发送消息&#xff0c;其返回值为接收到该消息的订阅者的数量。 &#xff08;2&#xf…

C++进阶——set和map

目录 前言 一、set 1.set的基本介绍 2.set的使用 2.1构造与迭代器 2.2插入 2.3删除 2.4查找 2.5获取需要的区间 2.6一些使用示例 3.set和multiset的区别 4.set相关oj题目 二、map 1.map的基本介绍 2.map的使用 2.1构造与迭代器 2.2增删查以及获取区间 2.3数据…

java基础:while循环-猜数字游戏(附源码)

知识点&#xff1a;while循环 参考该文&#xff1a;JAVA中while循环的使用 实践&#xff1a;猜数字游戏 通过while 判断是否正确&#xff0c; 猜中结束&#xff0c; 若猜不中&#xff0c;猜3次结束 package com.game;import java.util.Scanner;public class Game {public…

DNS安全概述

一、DNS的解析过程 1.递归解析 递归解析是一种由DNS客户端&#xff08;通常是用户的应用程序&#xff0c;如一个浏览器&#xff09;向本地DNS解析器发出解析请求&#xff0c;然后本地DNS解析器负责查询最终结果并将结果返回给客户端&#xff0c;而中间的所有查询请求都由本地D…

学习docker第四弹------docker将本地镜像发布到私有库

目录 1 是什么2 使用2.1 下载镜像2.2 运行私有库Registry&#xff0c;相当于本地有个私有Docker hub2.3 案例演示创建一个新镜像&#xff0c;ubuntu安装ifconfig命令2.3.1 从Hub上下载ubuntu镜像到本地并成功安装2.3.2 原始的ubuntu镜像是不带着ifconfig命令的2.3.3 外网连通的…

在线绘图工具drawio,visio的平替

Draw.io&#xff1a;灵活高效的在线绘图工具推荐 在工作和项目管理中&#xff0c;流程图、架构图和思维导图等可视化图表是非常重要的沟通工具。Draw.io&#xff08;现更名为diagrams.net&#xff09;是一个强大且免费的在线绘图工具&#xff0c;适用于创建各种类型的图表。它功…

ComfyUI一键更换服装:IP-Adapter V2 + FaceDetailer(DeepFashion)

在这篇文章中&#xff0c;我们将探索如何使用新版的IP-Adapter和ComfyUI软件为人物进行换装。 整个过程非常简单&#xff0c;仅需要两张图片&#xff1a;一张服装图片和一张人物图片。 通过一系列节点的操作&#xff0c;ComfyUI就会把这个服装换到人物身上&#xff0c;并利用…

施磊C++ | 进阶学习笔记 | 5.设计模式

五、设计模式 这里贴出常用的23中设计模式。视频课程仅包含部分&#xff0c;剩余部分需要找其他课程或者资料进行自学。 1.设计模式三大类型概述 C设计模式是一套被广泛认可的用于解决常见软件设计问题的最佳实践&#xff0c;它们可以帮助开发者编写更加清晰、可维护和可扩展…

小白投资理财 - 解读市净率

小白投资理财 - 解读市净率 什么是市净率公式 市净率的解释市净率的意义市净率的局限性市净率的应用场景市净率举例计算市净率如何解读分析可能的情景对比其他行业公司 市净率与其他估值指标的结合总结 什么是市净率 市净率&#xff08;Price-to-Book Ratio&#xff0c;简称 P…

飞腾X100适配Ubuntu说明

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…

强化学习的数学原理-01基本概念

state: T h e s t a t u s o f a g e n t w i t h r e s p e c t t o t h e e n v i r o n m e n t The \quad status \quad of \quad agent \quad with \quad respect \quad to \quad the \quad environment Thestatusofagentwithrespecttotheenvironment (agent 相对于环境的…

WPF 中的 StackPanel 详解

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软开发的一种用于创建桌面客户端应用程序的用户界面框架。WPF 提供了一套丰富的控件和布局能力&#xff0c;使得开发者可以轻松构建出功能强大、视觉优美的用户界面。在 WPF 的布局系统中&#xff0c;StackPane…

【原创】java+ssm+mysql水费管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

StarRocks大批量数据导入方案-使用 Routine Load 导入数据

本文详细介绍如何使用Routine Load 导入数据 一、准备工作 1.1 安装基础环境 主要是安装StarRocks和Kafka&#xff0c;本文直接跳过不做详细介绍~ 二、概念及原理 2.1 概念 导入作业&#xff08;Load job&#xff09; 导入作业会常驻运行&#xff0c;当导入作业的状态为 R…

【Linux】了解pthread线程库,清楚并没有线程创建接口,明白Linux并不存在真正意义的线程(附带模型图详解析)

前言 大家好吖&#xff0c;欢迎来到 YY 滴Liunx系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

数字化转型的成功路径:最佳实践与实施技巧深度解析

在全球化和技术革命的双重推动下&#xff0c;企业正面临前所未有的市场竞争和运营压力。为了适应这种变化&#xff0c;企业纷纷开始了数字化转型的进程&#xff0c;希望借助技术力量提升效率、推动创新并保持竞争优势。尽管数字化转型的趋势已不可逆&#xff0c;但如何真正落地…