个人旅游网(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(分页的条件)