实现对搜索功能的模糊查询以及用户列表的分页式管理

在昨天我们实现了对项目的搭建以及数据库的增删改查,还不太明白的可以看这篇博客https://blog.csdn.net/qq_43510659/article/details/107513607
今天我们主要来实现搜索功能的模糊查询以及用户列表的分页式管理。

bean包中新建一个PageInfo类将获取到的用户List储存到其中。

package com.zhongruan.bean;

import java.util.List;

public class PageInfo<T> {
    private List<T> 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;
    }
}

UserDao类对findAll进行修改

//    List<User> findAll();
List<User> findAll(@Param("start") int start,@Param("username")String username);

UserMapper类实现对数据库的模糊查询


    <select id="findAll" resultType="user">
        select * from tb_user
        <if test="username!=null and username!='' ">
            where username like concat("%",#{username},"%")
        </if>
        limit #{start},5
    </select>

 <select id="getTotalCount" resultType="int">
        select count(*) from tb_user
        <if test="username!=null and username!='' ">
            where username like concat("%",#{username},"%")
        </if>
    </select>

UserService类对findAll进行修改

//    List<User> findAll();
    PageInfo<User> findAll(int currentPage,String username);

UserSeviceImpl对findAll方法实现

 @Override
    public PageInfo<User> findAll(int currentPage, String username) {
        PageInfo<User> pageInfo = new PageInfo<>();
        pageInfo.setSize(5);
        //tc为查询数据的总行数
        int tc = userDao.getTotalCount(username);
        pageInfo.setTotalCount(tc);
        //tp为总页数
        int tp = (int)Math.ceil(tc/5.0);
        pageInfo.setTotalPage(tp);
            if (currentPage<1){
                pageInfo.setCurrentPage(1);
            }else if(currentPage>tp){
                pageInfo.setCurrentPage(tp);
            }else{
                pageInfo.setCurrentPage(currentPage);
            }
            //0,5,10,15
            int start = (pageInfo.getCurrentPage()-1)*5;
            List<User> userList = userDao.findAll(start,username);
            pageInfo.setList(userList);
            return pageInfo;
    }

UserController类

@RequestMapping("/findAll.do")
    public ModelAndView findAll(@RequestParam(defaultValue = "1")int currentPage, String username,
                                @RequestParam(defaultValue = "0")int type, HttpSession seesion){
        if(type==1){
            seesion.setAttribute("searchName",username);
        }else{
            username = (String) seesion.getAttribute("searchName");
        }
        PageInfo<User> pageInfo = userService.findAll(currentPage,username);
        ModelAndView mv = new ModelAndView();
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("user-list");
        return mv;
    }

接下来就需要修改user-list.jsp文件,使用刚刚创建的PageInfo对象来传递数据。users.list来获取userinfo信息,在分页中我们需要使用使用users这一对象中的pageTotal与pageCurrent,来确定需要分页的位置。pageTotal在一个循环中显示可以储存下需要多少数据的页面,pages中总共有多少页面。

<div class="box tools pull-right">
						<ul class="pagination">
							<li><a href="/user/findAll.do" aria-lable="Previous">首页</a> </li>
							<li><a href="/user/findAll.do?currentPage=${pageInfo.currentPage-1}">上一页</a> </li>
							<c:forEach begin="1" end="${pageInfo.totalPage}" var="pageNum">
								<li><a href="/user/findAll.do?currentPage=${pageNum}">${pageNum}</a> </li>
							</c:forEach>
							<li><a href="/user/findAll.do?currentPage=${pageInfo.currentPage+1}">下一页</a> </li>
							<li><a href="/user/findAll.do?currentPage=${pageInfo.totalPage}" aria-lable="Next">尾页</a> </li>
						</ul>
					</div>

个人总结
今天我们主要就是实现了用户列表的分页以及模糊查询,在使用的时候我们需要totalPage、size、totalCount、currentPage来确定是哪一个页面与数据的数量,然后在mapper包中进行sql语句的修改,使用concat来进行模糊查询,在实现接口时对findAll方法进行重新编写,在controller中也一样,最后在jsp文件中使用封装好的PageInfo来传递数据供页面使用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值