解决高并发-springboot-redis-mysql医院预约系统项目超详细讲解--半个小时教你如何使用springboot完成预约项目-----第五章:更换日期查看剩余预约数

本文详细讲解了如何在医院预约系统中,利用SpringBoot、Redis和Mysql处理高并发问题。重点介绍了通过Redis缓存医生信息,并在服务层和控制器层实现动态获取不同日期的剩余预约数功能。同时,文章提到了实体类需实现Serializable接口以确保序列化,以及前端页面如何根据预约数更新按钮状态。
摘要由CSDN通过智能技术生成
	更换日期只会更换预约数,不会更换医生信息,所以需要使用ajax局部刷新
	解决高并发,取出医生信息从缓冲区里取,不要从数据库取
	
	页面id需要显示的时候就把id拼接成字符串,传到页面,在ajax的时候把字符串卸载地址栏上
	更换日期只需要通过页面获取id,通过id和日期查看redis里的医生list长度,在算出预约数
	在使用ajax修改value

mapper
一个方法通过id查询医生信息

doctormmaper 新加一个方法

    <select id="selectDoctorById" parameterType="Integer" resultMap="doctorMap">
        select * from doctor where doctorId = #{
   doctorId}
    </select>

dao层
CacheDaoImpl 缓冲区实现类
新增一个方法
Cacheable,通过id吧每个医生信息存到redis里,string类型
重点!序列化:医生实体类必须实现Serializable接口

    @Override
    //Cacheable:执行此函数前先在缓存中取数据,若缓存中不存在则执行此函数,并吧信息缓存起来
    @Cacheable(value = "doctor", key = "#p0") //键名为doctor::1
    public Doctor getDoctorById(Integer doctorId) {
   
        return doctorMapper.selectDoctorById(doctorId);
    }

service层
新增一个方法

@Override
    public Doctor getDoctorById(Integer doctorId) {
   
        return cacheDao.getDoctorById(doctorId);
    }

controller层
获取预约数方法 页面绑定onchange方法 //onchange参数改变触发
页面获取日期和医生的id字符串(之前all_doctor方法穿过)
获取参数时可以把字符串转成数组(我也不知道为什么,就是能!springboot牛逼!)
获取需要把数据传到地址栏上~

    @RequestMapping("get_total")
    @ResponseBody
    public Map<String, Integer> getDoctorsTotal(Integer[] doctorId, @DateTimeFormat(pattern = "yyyy-MM-dd") Date bookingDate) {
   

        Map<String, Integer> result = new HashMap<>();

        SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
        String date = fmt.format(bookingDate);

        for (Integer id : doctorId) {
   
            Doctor doctor &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值