您的位置:首页 > 其它

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

2020-07-23 15:41 513 查看

在昨天我们实现了对项目的搭建以及数据库的增删改查,还不太明白的可以看这篇博客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来传递数据供页面使用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐