栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式预约挂号平台(三) | 郑医宝の后台系统之医院设置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式预约挂号平台(三) | 郑医宝の后台系统之医院设置

文章目录
        • 一、需求
        • 二、医院设置数据库表
        • 三、添加医院设置表的实体类
          • 1.基本实体类baseEntity
          • 2.医院设置实体类HospitalSet
        • 四、医院微服务模块service_hosp
          • 1.为微服务模块添加配置信息application.properties
          • 2.添加启动类ServiceHospApplication
          • 3.三层架构 - - mapper持久层
          • 4.三层架构 - - mapper持久层的xml文件
          • 5.三层架构 - - mapper持久层的扫描实现类的配置类
          • 6.三层架构 - - service业务层接口
          • 7.三层架构 - - service业务层实现类
          • 8.三层架构 - - controller表示层
          • 9.测试

一、需求

保存开通医院的一些基本信息,每个医院一条信息,保存医院编号和接口调用相关签名key(只有key相同才可以建立连接)等信息

二、医院设置数据库表
# 医院设置
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 '联系人手机',
  # 如果是1,处于连接断开状态
  `status` TINYINT(3) NOT NULL DEFAULT '0' COMMENT '状态',
  # TIMESTAMP时间戳
  `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='医院设置表';

添加一条数据

三、添加医院设置表的实体类

实体类中采用@TableField("create_time")来使实体类属性映射数据库表字段


在model模块下面的java包中创建com.zhengyibao.yygh包,包下创建如下目录结构


1.基本实体类baseEntity
package com.zhengyibao.yygh.model.base;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;



@Data   //lombok生成的注解,会将get、set方法和string方法都自动生成
public class baseEntity implements Serializable{

    @ApiModelProperty(value="id") //@ApiModelProperty用于对对model属性的说明或者数据操作更改 value
    @TableId(type= IdType.AUTO)   //@TableId用于,主键策略,AUTO代表主键自动增长
    private Long id;


    @ApiModelProperty(value="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField("create_time")    //映射数据库中的名称
    private Date createTime;

    @ApiModelProperty(value="更新时间")
    @TableField("update_time")
    private Date updateTime;

    @ApiModelProperty(value="逻辑删除(1:已删除,0:未删除)")
    @TableLogic    //Mybatis-plus逻辑删除
    @TableField("is_deleted")
    private Integer isDeleted;

    @ApiModelProperty(value="其他参数")
    @TableField(exist = false) //表示当前属性不是数据库的字段,但在项目中必须使用
    private Map param=new HashMap<>();
}
2.医院设置实体类HospitalSet
package com.zhengyibao.yygh.model.hosp;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zhengyibao.yygh.model.base.baseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;



@Data  //lombok生成get、set方法
@ApiModel(description = "医院设置")
@TableName("hospital_set")
public class HospitalSet extends baseEntity{   //继承baseEntity的基本属性

    private static final long serialVersionUID = 1L;    //Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的
                                                        //进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常
                                                        //默认的1L,也可以是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段
    @ApiModelProperty(value="医院名称")
    @TableField("hosname")
    private String hosname;

    @ApiModelProperty(value="医院编号")
    @TableField("hoscode")
    private String hoscode;

    @ApiModelProperty(value="api基础路径")
    @TableField("api_url")
    private String apiUrl;

    @ApiModelProperty(value="签名秘钥")
    @TableField("sign_key")
    private String signKey;

    @ApiModelProperty(value="联系人姓名")
    @TableField("contacts_name")
    private String contactsName;

    @ApiModelProperty(value="联系人手机")
    @TableField("contacts_phone")
    private String contactsPhone;

    @ApiModelProperty(value="状态")
    @TableField("status")
    private Integer status;
}
四、医院微服务模块service_hosp

1.为微服务模块添加配置信息application.properties
# application.properties

# 服务端口
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://localhost:3306/yygh_hosp?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root123

#返回json的全局时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
2.添加启动类ServiceHospApplication
package com.zhengyibao.yygh.hosp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;



@SpringBootApplication
public class ServiceHospApplication {
    public static void main(String[] args){
        SpringApplication.run(ServiceHospApplication.class, args);
    }
}

run ServiceHospApplication测试微服务框架搭建是否正确
将service模块中pom.xml的服务调用、服务注册和流量控制三个依赖注释掉,不注释会报错

3.三层架构 - - mapper持久层
package com.zhengyibao.yygh.hosp.mapper;

import com.baomidou.mybatisplus.core.mapper.baseMapper;
import com.zhengyibao.yygh.model.hosp.HospitalSet;


//由于HospitalSet不在service_hosp模块中,去service模块的pom.xml文件中将model模块引入
//mybatis-plus在mapper提供了baseMapper接口,继承这个接口,可获得CRUD功能
public interface HospitalSetMapper extends baseMapper{

}

由于HospitalSet不在service_hosp模块中,去service模块的pom.xml文件中将model模块引入


	
	    com.zhengyibao
	    model
	    0.0.1-SNAPSHOT
	

4.三层架构 - - mapper持久层的xml文件
# HospitalSetMapper.xml




5.三层架构 - - mapper持久层的扫描实现类的配置类
package com.zhengyibao.yygh.hosp.config;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;



@Configuration  //配置类
@MapperScan("com.zhengyibao.yygh.hosp.mapper")  //由于mapper的实现类会动态被创建,所以需要加配置类来扫描mapper的包查找他的实现类
public class HospitalConfig {
}
6.三层架构 - - service业务层接口
package com.zhengyibao.yygh.hosp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhengyibao.yygh.model.hosp.HospitalSet;


//继承IService,是mybatis-plus提供的,可以让Mybatis-Plus在Service层去调用Mapper
public interface HospitalSetService extends IService{

}
7.三层架构 - - service业务层实现类
package com.zhengyibao.yygh.hosp.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhengyibao.yygh.hosp.mapper.HospitalSetMapper;
import com.zhengyibao.yygh.hosp.service.HospitalSetService;
import com.zhengyibao.yygh.model.hosp.HospitalSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;



@Service   //将实现类交给spring去管理
//ServiceImpl<对应的mapper,实体类>是mybatis-plus提供的实现类
public class HospitalSetServiceImpl extends ServiceImpl implements HospitalSetService{
    //一般service类里面要注入mapper,但由于交给mybatis-plus管理,在ServiceImpl已经注入过了,不需要使用@Autowired再进行注入了

}
8.三层架构 - - controller表示层
package com.zhengyibao.yygh.hosp.controller;

import com.zhengyibao.yygh.hosp.service.HospitalSetService;
import com.zhengyibao.yygh.model.hosp.HospitalSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController  //里面有两个主要注解,1.@Controller:让HospitalSetController交给spring管理 2.@ResponseBody:返回数据(以json格式返回)
@RequestMapping("/admin/hosp/hospitalSet")  //访问的路径 http://localhost:8201/admin/hosp/hospitalSet/findAll
public class HospitalSetController {

    //注入service
    @Autowired
    private HospitalSetService hospitalSetService;

    //1.查询医院设置表的所有信息
    @GetMapping("findAll")   //get方式提交(查询所有)
    public List findAllHospitalSet(){
        //调用service里面的方法 mybatis-plus给增删改查在mapper中做了封装,在service中也做了封装
        List list=hospitalSetService.list();
        return list;  //@RestController注解返回数据,底层的jackson会将数据转换成json格式,所以list最后会被转换成json格式
    }

    //2.删除
    @DeleteMapping("{id}")  //delete方式提交,并通过路径传id值 但由于浏览器无法直接使用delete方式访问,所以要在comment模块整合swagger,在common父模块的pom.xml中引入swagger的依赖,在service_util中
    public boolean removeHospitalSet(@PathVariable Long id){  //@PathVariable Long id 用来得到通过路径传入的值
        boolean flag=hospitalSetService.removeById(id);
        return flag;
    }
}
9.测试

访问此路径:http://localhost:8201/admin/hosp/hospitalSet/findAll

问题:delete方式提交,并通过路径传id值 但由于浏览器无法直接使用delete方式访问
要在comment模块整合swagger,在common父模块的pom.xml中引入swagger的依赖,在service_util中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273565.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号