南平市住房和城乡建设局网站,wordpress二级目录伪静态,承德网站开发区地税,河间网站建设制作医院信息化与智能化系统(3)
这里只描述对应过程#xff0c;和可能遇到的问题及解决办法以及对应的参考链接#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图#xff0c;可以试试PlantUML#xff0c;告诉GPT你的文件结构#xff0c;让他给你对应的…医院信息化与智能化系统(3)
这里只描述对应过程和可能遇到的问题及解决办法以及对应的参考链接并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图可以试试PlantUML告诉GPT你的文件结构让他给你对应的代码
预约挂号微服务模块搭建
1、构建父工程yygh-parent
在Maven的pom.xml中packagingpom/packaging指定了该项目的打包类型为 POM。这意味着这个项目是一个父项目或聚合项目而不是一个可执行的JAR或WAR文件。
其作用是为了管理依赖版本以及公共依赖
通过Spring Initializr创建项目添加依赖项
好处
自动重启 当你修改代码并保存文件时DevTools 会自动重启应用这样你不必手动重启服务提高开发效率。快速热部署 在开发模式下DevTools 允许快速查看代码更改的效果无需每次都重新启动应用。LiveReload 与浏览器配合实时刷新网页方便前端开发。增强配置元数据 为你的配置类生成元数据使得 IDE如 IntelliJ IDEA能够提供智能提示和代码补全功能。类型安全的配置 通过生成的元数据确保配置项的类型和名称的正确性避免常见的配置错误。
此处还会出现一个问题创建好的springboot项目根本没有spring-boot-starter-parent
原因 因为创建springboot工程的时候使用的是阿里云提供的网址初始化项目的时候官网的采用的是继承的parent标签。而阿里云是直接通过引用依赖所以看不到parent标签(转自此处)
解决方案 自行添加parent标签记住这里的版本一定要和你的spring-boot设置的版本一样
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.16/version
/parent后续就是添加相关依赖这里主要描述pom内标签的几个作用:
parent 标签在 Maven 项目中用于声明一个项目的父 POMProject Object Model。父 POM 提供了一组可以被子项目继承的配置和依赖从而减少重复配置简化多模块项目的管理。可以继承的包括:
依赖版本通过 dependencyManagement。构建设置通过 build插件配置通过 pluginManagement通用属性通过 properties
dependencyManagement 主要用于在父项目或父 POM 中定义依赖的版本和范围但并不会将依赖自动引入子项目。子项目需要显式声明依赖项. dependencies 标签用于直接声明项目中需要的依赖项。这些依赖会立即被添加到项目的构建路径中并且在构建时自动下载和使用。
properties 标签你可以定义一些全局的变量如 Java 版本、字符编码、依赖的版本等便于项目的统一配置和维护。
build 标签出现在 pom.xml 文件中用于管理项目的构建配置包括
项目编译、测试和打包的行为定义。配置构建过程中的插件及其参数。自定义项目输出的路径和文件名称等。
位于 build 标签下 pluginManagement用于为子项目或模块定义插件的默认配置。子项目要想使用这些插件必须显式声明插件。它只管理插件而不会在没有声明的情况下自动应用插件。 plugins用于在当前项目或子项目中直接应用插件。这里声明的插件会自动应用并参与项目的构建过程。 plugin 用于定义和配置 Maven 插件。Maven 插件是一组可以在项目构建过程中执行的任务例如编译、打包、测试等。通过插件你可以扩展 Maven 的默认行为或引入特定的功能。
2、搭建common父模块 在yygh-parent工程下创建子工程模块common会遇到一个问题找不到常规Maven模块创建,似乎只提供了Maven Archetype模版创建其实是可以创建普通Maven模块的在新建模块里。 此处参考 添加依赖对swagger依赖项进行说明
使用 Swagger 的功能:
生成 API 文档通过注解生成自动化的 API 文档无需手动编写。在线测试Swagger 提供可视化的接口文档页面可以直接在页面上进行 API 请求测试。代码生成Swagger 可以根据文档生成多语言的客户端和服务端代码。
搭建common-util、service-utilcommon子模块先统一安装对应依赖 (后续还有再补充)
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状态锁定/解锁默认值0 1表示可用于连接create_time创建时间默认值CURRENT_TIMESTAMPupdate_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文件 dependencygroupIdcom.xxx/groupIdartifactIdmodel/artifactIdversion0.0.1-SNAPSHOT/version/dependency其中添加 mapper 接口是为了在 MyBatis 或 MyBatis-Plus 中定义与数据库的交互逻辑它提供了将 Java 方法与 SQL 语句进行映射的机制。
第五步 添加service接口及实现类
创建HospitalSetService接口(封装业务逻辑)继承IService接口它集成了一些通用的服务方法。[这里接口填泛型填的是实体类HospitalSet]
实现该Service接口并可以调用 Mapper 接口。
Service
public class HospitalSetServiceImpl extends ServiceImplHospitalSetMapper, HospitalSetimplements HospitalSetService {
Autowired
private HospitalSetMapper hospitalSetMapper;
}ServiceImpl 是 MyBatis-Plus 提供的一个基础服务实现类它已经封装好了常见的 CRUD增删改查操作开发者只需继承这个类就可以自动拥有这些基本功能而无需每次都手动实现。
ServiceImpl 使用了两个泛型参数
M extends BaseMapperT, T implements IServiceT
MMapper 类型表示对应的 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方法