收藏功能_Java项⽬实战第13天:收藏功能的实现今天是刘⼩爱⾃学Java的第112天。
感谢你的观看,谢谢你。
话不多说,开始今天的学习:
收藏,⼀个很常见很重要的功能。
看到⼀篇⽂章,可以选择收藏。
看到⼀个商品,也可以选择收藏。
包括本次案例中的旅游路线也是⼀样的。
这也是⼀个被频繁使⽤的功能。
我写了⼀百多篇的⽂章,有⼀个重⼤发现就是:⽂章被收藏数,远远⼤于点赞和评论。
正所谓收藏从未停⽌,学习从未开始。
这是我某平台的后台截图:
我们今天要学的就是这个收藏功能的实现,当然我们项⽬不是⽂章,⽽是旅游线路的收藏。
⼀、业务分析
收藏有什么特点呢?
⽤户收藏之后,在他的收藏夹可以快速访问。
同⼀旅游路线,可以有多个⽤户收藏。
同⼀个⽤户,可以收藏多条旅游路线
它们之间的关系是多对多,所以在设计数据表时,会设计⼀个中间表来关联它们。
这是我在可视化⼯具中才注意到的视图功能,这样⼀看的话,表与表之间的关系就很清楚了。在中间表中,有另外两张表的主键,分别为uid和rid。
uid可以确定是哪个⽤户。
rid可以确定是哪条路线。
其中主要牵扯到两个功能:
1判断该路线是否能够被⽤户收藏
想要收藏旅游路线,肯定需要⽤户登录的。
如果⽤户没有登录,则⽆法收藏。
如果⽤户已经收藏了,也没法收藏。
2可以收藏的话完成收藏功能
收藏了之后,要将对应路线的count值加⼀。
同时还要将对应路线的count值查询出来,以便⽤户查看总收藏数。
⼆、判断是否已被收藏
1前端发送请求
向后台发送请求判断是否能收藏,请求中的参数为rid。
2Web层
创建FavoriteServlet接受请求,在isFavorite⽅法中编写代码:
①接受请求
获取前端发送的请求数据rid。
②Service层
这⾥做了⼀个判断,判断⽤户是否登录:
如果⽤户没有登录,那么不可收藏。
如果⽤户已经登录了,那么再去数据库查询是否已经收藏了。
③响应数据
将数据转换成json数据,再响应数据。
3Service层
①调⽤dao层查询数据
我们要判断⽤户是否已经收藏了该路线,需要根据rid和uid这两个参数去查询tab_favorite表。查询数据⼀般是⼀条数据,但稳妥起见这⾥返回值还是⽤⼀个集合接受。
毕竟就算只有⼀条数据也可以放⼊集合中。
②查询结果判断
jdbctemplate查询一条数据如果能查询到数据,则表⽰已经收藏了,所以返回false,反之则为true。
4dao层
使⽤jdbcTemplate的query⽅法查询数据,结果为⼀个集合,将其返回即可。
5前端渲染
前端接受服务器响应的数据之后,根据返回值判断是否将相应的按钮隐藏:
如果返回的值为true,表⽰已经被收藏了,所以不可收藏了,将点击收藏这个按钮隐藏。如果返回值为false,则相反。
上述都是使⽤的id选择器来定位标签。
三、添加收藏业务
添加收藏的功能实现和上述的是差不多的,但逻辑稍许复杂。
1前端发送请求
在“点击收藏”处将点击事件和该函数绑定。
⽤户点击收藏,就会向服务器发送请求,其中请求参数为rid。
2web层
接受前端请求,并在addFavorite()⽅法中编写代码:
①⽤户未登录
则不可添加收藏,将数据封装到map中。
②⽤户已登录:添加收藏数据
调⽤favoriteService来操作。
③⽤户已登录:更新收藏记录数
调⽤routeService来操作。
添加收藏只是针对tab_favorite这张表,除此之外我们还得查询添加收藏后的总收藏数。所以需要根据rid查询tab_route这张表中的数据,得到route对象。
再调⽤route的属性count即可得到总收藏数,其对应Service层Dao层代码如下:
注意:这⾥是Route中的代码编写。
既然是根据id查询,肯定是⼀个route对象,故使⽤queryForObject()⽅法。
3Service层
这⾥是Favorite的service层。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论