ssm项目之搜索和分页

功能开发
分页功能是通过后端逻辑实现的,而非前端的组件
(1)实体类 PageInfo
在bean目录下新建一个PageInfo实体类,用来存放每一页显示的信息、和分页的一些参数和属性
package com.tengshan.bean;
import java.util.List;

package com.tengshan.bean;
import java.util.List;
public class PageInfo { //定义为泛型
private List<T> list;  //每一页用一个list
private int size;      //每一页数据量
private int totalPage; //总页数
private int totalCount;//总共数据来
private int currentPage; //当前第几页

public List<T> getList() {
    return list;
}

public void setList(List<T> list) {
    this.list = list;
}

public int getSize() {
    return size;
}

public void setSize(int size) {
    this.size = size;
}

public int getTotalPage() {
    return totalPage;
}

public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
}

public int getTotalCount() {
    return totalCount;
}

public void setTotalCount(int totalCount) {
    this.totalCount = totalCount;
}

public int getCurrentPage() {
    return currentPage;
}

public void setCurrentPage(int currentPage) {
    this.currentPage = currentPage;
}

修改dao目录下的接口List findAll(@Param(“start”)int start,@Param(“username”)String username);
替换掉之前的findAll方法,此处的@Param注解是用在dao文件中,用于与mapper文件中的sql语句字段对应,将此处的参数传到sql语句里。同时我们修改UserMapper里面的sql语句为
`select * from user_ssm

where username like concat("%",#{username},"%")

limit #{start},8`
再在service业务处理层替换同样操作的接口方法,再在impl调用dao目录下的方法实现功能。
将findAll修改和搜索功能共用
在impl中进行一个逻辑判断,当点击下一页到达最后一页继续currentPage+1时,设置currentPage为totalPage,同理将左边界设置为1,
这里的state用来表示当前页面的第一条数据在数据库中的位置,在state往后的8条数据将会被显示在页面中。再通过userDao将state和username传到sql语句中进行查询,并将查询到的结果存储在userList中

@Override
public PageInfo findAll(int currentPage, String username) {
PageInfo pageInfo = new PageInfo<>();
pageInfo.setSize(8);//每页长度 和 userMapper中一致 每一页显示5条
int totalCount = userDao.getTotalCount(username); //查询总长度
pageInfo.setTotalCount(totalCount);
 int totalPage = (int)(totalCount/pageInfo.getSize()) + 1;
 pageInfo.setTotalPage(totalPage);

 if(currentPage<1){
     pageInfo.setCurrentPage(1);
 }else if(currentPage>totalPage){
     pageInfo.setCurrentPage(totalPage);
 }else{
     pageInfo.setCurrentPage(currentPage);
 }

 int start = (pageInfo.getCurrentPage()-1)*pageInfo.getSize(); //开始查询的数
 List<User> userList = userDao.findAll(start,username);
 pageInfo.setList(userList);
 return pageInfo;
 }

之后修改控制器代码如下,同样也是替换掉之前的findAll方法

@RequestMapping("/findAll.do")
public ModelAndView findAll(@RequestParam(defaultValue = “1”) int currentPage, String username,
@RequestParam(defaultValue = “0”)`
int type, HttpSession session){if(type==1){//搜索功能
    session.setAttribute("searchName",username);//将username保存到session中
}else{
    username = (String) session.getAttribute("searchName");
}
PageInfo<User> pageInfo = userService.findAll(currentPage,username);
ModelAndView mv = new ModelAndView();
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;}

最后修改jsp文件,需要修改pages目录下的user-list.jsp
先将原先遍历user用于展示的user改为遍历存放在pageInfo中的list
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值