个人旅游网(3)——功能详解——旅游路线功能

文章目录

  • 一、旅游路线分类功能
    • 1.1、接口详解
      • 1.1.1、findAll
  • 二、路线分类下的旅游路线功能
    • 2.2、接口详解
      • 2.2.1、findRouteListByCid
  • 三、点击单条旅游路线查看其详情功能
    • 3.1、接口详解
      • 3.1.1、findRouteListByRid
  • 四、分页功能
    • 4.1、导入依赖
    • 4.2、配置项的配置
    • 4.3、实现分页

一、旅游路线分类功能

页面效果图:
在这里插入图片描述
上述的每个线路分类下有许多的旅游路线,不同的线路分类会区分不同的旅游路线。线路分类作为导航栏的数据,并不会受到用户频繁的增删改查,并且这些路线分类数据需要经常使用到,因此可以将这些数据存储至reids中,这样每次从缓存获取这些数据的速度就会比从数据查询这些数据快得多。

1.1、接口详解

该功能涉及一个 接口,findAll(从category路线分类表中查询出所有路线分类)

1.1.1、findAll

首先定义一个 key 值,根据key值从redis中取出value值,如果redis中取出的value值为空,再从数据库中查询所有线路分类数据,然后再将线路分类数据存入redis中,以后就可以从redis中获取线路分类数据了。
在这里插入图片描述

二、路线分类下的旅游路线功能

页面效果图:
在这里插入图片描述
该功能涉及到通过路线分类的cid来查询某个路线分类下的所有旅游路线,并且这些旅游路线以每1页3条数据的分页条件展示,同时实现以旅游路线名称的模糊搜索。该功能涉及一个接口,findRouteListByCid

2.2、接口详解

2.2.1、findRouteListByCid

首先设置好分页条件,然后将前端参数cid、rname获取,在数据库中通过cid查询到对应cid下的所有里边有路线,同时以rname作为模糊搜索的条件。
在这里插入图片描述

三、点击单条旅游路线查看其详情功能

页面效果图:
在这里插入图片描述
在这里插入图片描述
该功能主要是根据旅游线路id查询当前该条旅游线路的详情,由于该功能的实现较为复杂,在进行接口详解前先进行具体分析以及sql详情分析。
在这里插入图片描述
在这里插入图片描述

3.1、接口详解

3.1.1、findRouteListByRid

在这里插入图片描述
由于联表查询,因此使用Map接收从数据库查询得到的数据,再使用工具类将此Map转为Route对象。
在这里插入图片描述
在这里插入图片描述
由于只联表查询了线路分类表、商家表,因此数据库查询得到的数据返回给map时,map中获得的数据并不包含旅游线路图得信息,其实当初在联表表查询时加上旅游线路图表一起查,然后旅游线路图信息也是跟线路分类信息category、商家信息seller一样从map中获取然后设置给route也可以,也可以单独使用sql语句从数据库查询出旅游线路图信息信息,然后再设置给route也可以,我采用的是第2种写法。
在这里插入图片描述

四、分页功能

可以自己实现分页功能,也可以调用springboot提供的分页插件。调用springboot提供的现成的分页插件步骤:

4.1、导入依赖

 <!--        分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>

4.2、配置项的配置

import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * 使用该插件进行分页
 */
@Configuration
public class PageHelperConfig {
    @Bean
    public PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();

        //设置参数
        Properties properties = new Properties();
        //reasonable:分页合理化参数,默认值为false, 直接根据参数进行查询。
        //               当该参数设置为 true 时,pageNum<=0 时会查询第一页,
        //               pageNum>pages(超过总数时),会查询最后一页。
        properties.setProperty("reasonable", "true");
        //配置helperDialect属性来指定分页插件使用哪种方言
        properties.setProperty("helperDialect", "mysql");
        pageInterceptor.setProperties(properties);

        return pageInterceptor;
    }
}

4.3、实现分页

在原本的查询语句上,加上一句代码即可实现的分页查询:PageHelper.startPage(分页的条件)
在这里插入图片描述

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

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

相关文章

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意&#xff1a; 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下&#xff0c;将 2 分成两份&#xff0c;…

使用 EMQX 开源版的 Webhook 机制处理消息并存储数据

1、前言 EMQX 是一款强大的开源 MQTT 消息代理&#xff0c;它支持大量的连接和高吞吐量&#xff0c;适用于各种物联网应用。Webhook 是 EMQX 提供的扩展功能之一&#xff0c;用于将消息推送到外部的 HTTP 服务。在本文中&#xff0c;我们将介绍如何使用 EMQX 开源版的 Webhook …

整型数组按个位值排序

题目描述 给定一个非空数组(列表)&#xff0c;其元素数据类型为整型&#xff0c;请按照数组元素十进制最低位从小到大进行排序&#xff0c;十进制最低位相同的元司 相对位置保持不变。 当数组元素为负值时&#xff0c;十进制最低位等同于去除符号位后对应十进制值最低位。 输…

QT核心内容(9.6)

1> 手写unique_ptr智能指针 代码&#xff1a; #include <iostream> #include <cassert>using namespace std; template<typename T> class my_unique_ptr { private:T* ptr;// 禁止拷贝构造函数和拷贝赋值操作符my_unique_ptr(const my_unique_ptr&a…

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大&#xff0c;尤其是在嘈杂的环境中&#xff0c;音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”&#xff0c;我的手机音质瞬间提升了好几个档次。 软件简介&#xff1a; “扬声器助推器”利用先进的音频处理技术&#xff0c;能够…

vivado error:Combinatorial Loop Alert:1 LUT cells form a combinatorial loop

VIVADO ERROR :Combinatorial Loop Alert&#xff1a;1 LUT cells form a combinatorial loop vivao生成bit流时发生报错&#xff0c;如下图所示定位原因解决 vivao生成bit流时发生报错&#xff0c;如下图所示 定位原因 在三段式状态机中&#xff0c;组合逻辑代码if else 语句…

STM32:TIM定时中断配置的最全库函数讲解笔记

声明&#xff1a;本博客为哔哩哔哩up主江协科技 “STM32入门教程”的听课笔记&#xff0c;仅供学习、参考使用&#xff0c;不得用作其他用途&#xff0c;违者必究。如有版权问题&#xff0c;请联系作者修改。 目录 一、综述 二、TIM库 初始化 2.1、TIM_DeInit 恢复缺省值 …

IPv6 Sec机制的深度解析与优势探讨

IPv6的sec机制&#xff0c;主要指的是IPv6协议中内置的安全机制&#xff0c;特别是通过IP Sec协议集来实现的。IPv6在设计之初就考虑到了安全性问题&#xff0c;并内置了对IP Sec的支持&#xff0c;这使得IPv6网络在安全性能上相比IPv4有了显著的提升。 IP Sec协议集主要由认证…

Android Studio打开Modem模块出现:The project ‘***‘ is not a Gradle-based project

花了挺长时间处理该问题&#xff0c;特记录如下&#xff1a;1.背景&#xff1a; 在Android studio 下导入一个新增的modem模块&#xff0c;如MPSS.DE.3.1.1\modem_proc\AAA, 目的是看代码方便一些&#xff0c;可以自由搜索各种关键字。但导入该项目时出现了如下错误&#xff1a…

好用的AI编程助手[豆包]

欢迎来到 Marscode 的世界&#xff01;这里将为你揭秘 Marscode&#xff0c;它的独特之处、应用领域等相关精彩内容等你来探索。 一、打开VS Code 二、选择 Extensions,搜索marscode 三、点击安装 四、点击使用 五、输入需要编写的代码 六、根据自己的需求修改代码 MarsCode 注…

RabbitMQ 应用

文章目录 前言1. Simple 简单模式2. Work Queue 工作队列模式3. Pubulish/Subscribe 发布/订阅模式Exchange 的类型 4. Routing 路由模式5. Topics 通配符模式6. RPC RPC通信7. Publisher Confirms 发布确认1. 单独确认2. 批量确认3. 异步确认 前言 前面我们学习了 RabbitMQ 的…

学习笔记--MybatisPlus

官网&#xff1a;MyBatis-Plus &#x1f680; 为简化开发而生 快速入门 入门案例 引入MybatisPlus的起步依赖 定义Mapper 问题&#xff1a; MybatisPlus中Invalid bound statement (not found): com.itheima.mp.mapper.UserMapper.insert 一定要指定实体类&#xff01;&am…

GDB watch starti i files

watch break starti 在程序的最初开始运行的位置处断下来 ​​ i files 查看程序及加载的 so 的 sections ​​

遍历有向网格链路实现

在实际的业务中&#xff0c;我们可能遇到复杂规则&#xff08;多个或与条件组合&#xff09;&#xff0c;复杂链路等类似场景问题&#xff0c;如&#xff1a;规则引擎相关业务&#xff0c;生产任务排期等。 复杂链路示意图如下&#xff1a; 复杂网路链路场景描述 有一个或多…

机器学习如何用于音频分析?

机器学习如何用于音频分析&#xff1f; 一、说明 近十年来&#xff0c;机器学习越来越受欢迎。事实上&#xff0c;它被用于医疗保健、农业和制造业等众多行业。随着技术和计算能力的进步&#xff0c;机器学习有很多潜在的应用正在被创造出来。由于数据以多种格式大量可用&…

EasyExcel实现复杂Excel的导入

最近项目中遇到一个复杂的Excel的导入&#xff0c;并且数据量较大。因为数据不规则&#xff0c;所以只能使用POI进行自定义读取&#xff0c;但是发现数据量大之后&#xff0c;读取数据非常耗时。后面换成EasyExcel&#xff0c;性能起飞。 1. Excel样板 如上图&#xff0c;需要…

USB - 笔记

1.USB接口区分 2 充电宝 图中提到的各种充电协议都是用于快速充电技术的标准,适用于不同品

Chrome 浏览器插件获取网页 window 对象(方案三)

前言 最近有个需求&#xff0c;是在浏览器插件中获取 window 对象下的某个数据&#xff0c;当时觉得很简单&#xff0c;和 document 一样&#xff0c;直接通过嵌入 content_scripts 直接获取&#xff0c;然后使用 sendMessage 发送数据到插件就行了&#xff0c;结果发现不是这…

JAMA network open|自动化定量评估胃肠道肿瘤中三级淋巴结构的机器学习模型|文献精析·24-09-07

小罗碎碎念 这篇文章报道了一种基于机器学习模型的自动化方法&#xff0c;用于在常规组织病理学图像中检测和分类胃肠道癌症中的三级淋巴结构&#xff0c;并验证了其与患者生存预后的关联。 在这项多中心诊断/预后研究中&#xff0c;开发了一种基于机器学习的计算工具&#xff…

【pyhton】python如何实现将word等文档中的文字转换成语音

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…