途牛旅游项目——搜索与分页的后台代码
发布日期:2021-06-30 18:22:40 浏览次数:3 分类:技术文章

本文共 4565 字,大约阅读时间需要 15 分钟。

搜索分页思维导图:

在这里插入图片描述

步骤:

  • (1)用户输入路线名称关键字,后台将数据返回给前台
  • (2)前台使用分页显示
  • (3)分页工具条
  • (4)分页列表
    在这里插入图片描述
    在这里插入图片描述

RouteServiceTest

public class TestRouteService {
@Test public void test01(){
//业务对象 RouteService routeService = new RouteService(); //业务方法 search //为什么返回结果不能是一个List
就可以搞定? //搜索结果可能是几十万条数据,不显示全部而是按分页来显示 //分页中需要的数据有 总记录数100 每页记录数20 总页数5 当前1 当前页的集合 PageBean pageBean = routeService.search("宁夏",1,20); //显示 System.out.println(pageBean); }}

PageBean

public class PageBean {
//总记录数 100 private int totalCount; //每页记录数 20 private int pageSize; //总页数 5 private int totalPage; //当前页号 private int currentPage; //当前页的数据 private List
list;

Route

从资料里面复制

//旅游路线public class Route {
private int rid;//线路id,必输 private String rname;//线路名称,必输 private double price;//价格,必输 private String routeIntroduce;//线路介绍 private String rflag; //是否上架,必输,0代表没有上架,1代表是上架 private String rdate; //上架时间 private String isThemeTour;//是否主题旅游,必输,0代表不是,1代表是 private int count;//收藏数量 private int cid;//所属分类,必输 private String rimage;//缩略图 private int sid;//所属商家 private String sourceId;//抓取数据的来源id

RouteService

public class RouteService {
//搜索功能 public PageBean search(String keyword, int currentPage, int pageSize) {
//创建分页数据对象 包含4个整数与一个集合 PageBean pb = new PageBean(); //设置当前页号 pb.setCurrentPage(currentPage);//1* //设置每页记录数 pb.setPageSize(pageSize);//2 //设置总记录数 RouteDao routeDao = MySessionUtils2.getMapper(RouteDao.class); //'%长沙%' int totalCount = routeDao.findCountByName("%" + keyword + "%"); pb.setTotalCount(totalCount);//3* //设置总页数 每页最多只能放20条 40 2 与 41 3 //在java中,整数相除只保留整数部,丢失小数部 41/20 就是2 int totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1; pb.setTotalPage(totalPage);//4* //设置PageBean中的list集合 int start = (currentPage - 1) * pageSize; List
list = routeDao.findPageByName("%" + keyword + "%", start, pageSize); pb.setList(list); return pb; }}

RouteDao

public interface RouteDao {
//select count(*) from tab_route where rname like '%长沙%'; int findCountByName(String keyword); //select * from tab_route where rname like '%长沙%' limit 0,20; List
findPageByName(String keyword, int start, int pageSize);}

com\wzx\dao\RouteDao.xml

核心配置文件

RouteServlet

@WebServlet("/routeServlet")public class RouteServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收请求,获取参数 String keyword = request.getParameter("keyword"); String currentPageStr = request.getParameter("currentPage"); String pageSizeStr = request.getParameter("pageSize"); int currentPage = 1; if (currentPageStr != null && currentPageStr.length() > 0) {
//"11" "你好" try {
currentPage = Integer.parseInt(currentPageStr);//11 } catch (Exception e) {
e.printStackTrace(); } } int pageSize = 20; if (pageSizeStr != null && pageSizeStr.length() > 0) {
//"30" "你好" try {
pageSize = Integer.parseInt(pageSizeStr);//11 } catch (Exception e) {
e.printStackTrace(); } } //处理参数 RouteService routeService = new RouteService(); //PageBean pb = routeService.search("长沙",1,20); PageBean pb = routeService.search(keyword,currentPage,pageSize); //响应浏览器 ResponseInfo info = new ResponseInfo(); info.setCode(200); info.setData(pb); String json = new ObjectMapper().writeValueAsString(info); response.getWriter().println(json); }}
  • 测试//http://localhost:8080/lvyou_war_exploded/routeServlet?keyword=%E5%8C%97%E4%BA%AC&currentPage=1&pageSize=20

MyBatis的多参数传递

  • (1)Mybatis 支持 多参数传递
  • (2)Dao方法
    List findPage(String cid, int start, int pageSize);
  • (3)映射文件配置
    可使用参数出现的顺序号码引用参数
  • (4)示例
    第一个参数用arg0或param1表示
    第二个参数用arg1或param2表示
    arg从0开始计数,param从1开始计数

转载地址:https://libolin.blog.csdn.net/article/details/108957256 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:小白入门spring——IOC
下一篇:每日java笔试题——2020-10-7

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月15日 00时39分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【NLP学习笔记】One-hot encoding:独热编码 2019-04-30
【工具使用】CSDN编辑器markdown字体、颜色与字号的设置 2019-04-30
【NLP学习笔记】词共现矩阵 2019-04-30
【NLP学习笔记】NLP基础知识框架图 2019-04-30
【深度学习笔记】卷积的输入输出的通道、维度或尺寸变化过程 2019-04-30
【NLP学习笔记】训练集、验证集和测试集的概念及划分 2019-04-30
【NLP学习笔记】conda换源 2019-04-30
【深度学习笔记】常见的图像增强方法:scaling、rotating、flipping、random cropping 2019-04-30
【深度学习笔记】标准卷积 2019-04-30
【深度学习笔记】组卷积 2019-04-30
【深度学习笔记】循环神经网络和递归神经网络区别 2019-04-30
【学习笔记】英文科技论文常见英语句式积累 2019-04-30
【深度学习笔记】PixelShuffle 2019-04-30
【python3学习笔记】斜杠和双斜杠运算符的区别 2019-04-30
【深度学习笔记】torch.nn.Sequential(* args) 与 torch.nn.Module 2019-04-30
【深度学习笔记】用torch.nn.Sequential()搭建神经网络模型 2019-04-30
【深度学习笔记】用torch.nn.ModuleList搭建神经网络 2019-04-30
【解决错误】AttributeError: module ‘scipy.misc‘ has no attribute ‘imread‘ 2019-04-30
【解决错误】复现RCAN的时候遇到了ImportError: cannot import name ‘_update_worker_pids’ from ‘torch._C’ 2019-04-30
【解决错误】ModuleNotFoundError: No module named ‘skimage‘ 2019-04-30