个人学习日记,记录在学习过程的中的各种算法操作和技术;
关于分页查询,分页是当有大量数据的时候,不用一次性全部显示出来,从而造成数据显示缓慢.
本项目中蕴含的技术有:spring-Boot;Mybatis;Thymeleaf;Mysql;Maven;
网页中包括:JavaScript;CSS;Jquery;等.
我只把一些关键性的技术代码放出来,有需要或者不懂得可以私信我,拿整套项目源代码.感谢支持!!
首先创建的是一个拥有分页属性的类:get和set方法,还有tostring()方法就不放了,Alt+inset就可以调出来.
分页中所需要的属性:
public class pageBean<T> {
private int currPaged1;//当前页数
private int pageSizex1;//每页显示的数据记录数
private int totalPagezy1;//总页数
private int totalCountzx1;//总数据记录数
private List<T> lists;//所有每页显示的数据
接口层的代码:
mapper接口层的代码
//总数据记录数
public int selectCount();
//分页操作
//mapper接口层里返回值和参数要与.xml中的保持一致
public List<UserBean> findByPage(HashMap<String,Object> map);
service层中代码是和mapper接口不一样的,因为这个是要去调用返回最终输出结果集的
service层中的代码:
//总数据记录数
public int selectCount();
//分页操作
//service层是要去调用的方法,属于要传递到网页的最终返回值
public pageBean<UserBean> findByPage(int currpaged1);
service实现类中的代码:请注意注解
service实现类中的代码
@Override
public int selectCount() {
return userMapper.selectCount();
}
@Override
public pageBean<UserBean> findByPage(int currpaged1) {
HashMap<String,Object> map=new HashMap<String, Object>();
pageBean<UserBean> pageBean=new pageBean<UserBean>();
//封装当前页面
pageBean.setCurrPaged1(currpaged1);
//封装每页显示多少条数据,4就是每页显示最多4条数据
int pageSize=4;
pageBean.setPageSizex1(pageSize);
//封装总数据记录数
int tocalCountzx1=userMapper.selectCount();
pageBean.setTotalCountzx1(tocalCountzx1);
//总页数
double tc=tocalCountzx1;
Double num=Math.ceil(tc/pageSize);//向上取整
pageBean.setTotalPagezy1(num.intValue());
//添加到map集合中,start表示从什么位置开始查,size表示总共查多少数据(相当于什么位置结束);
map.put("start",(currpaged1-1)*pageSize);
map.put("size",pageBean.getPageSizex1());
//每页封装的数据
List<UserBean> list=userMapper.findByPage(map);
pageBean.setLists(list);
return pageBean;
}
下面是.xml文件,和mapper接口相对应,在mysql数据库中的操作:
接下来是主类,去对网页进行传递的Controller类:
Controller类中在网页调用的分页查询的主类:
defaultvalue:默认值,网页默认第一页
// 分页操作,默认值是1
@RequestMapping("/show")
public String show(@RequestParam(value="currPaged1",defaultValue="1")int currPaged1, Model model){
model.addAttribute("pagemsg",userServiceimpl.findByPage(currPaged1));
return "user_manage3";
}
下面到HTML网页中:只截取和分页相关的操作内容:
这是一段要显示出来的数据,each:循环出数据,因为是分页,每页只显示3个数据
<tr class="neirong" th:each="user:${pagemsg.lists}">
<td th:text="${user.id}"></td>
<td th:text="${user.loginname}"></td>
<td th:text="${user.realname}"></td>
<td th:if="${user.sex}==1">男</td>
<td th:if="${user.sex}==0">女</td>
<td th:text="${user.email}"></td>
<td th:text="${user.tel}"></td>
接下来是分页查询中需要做出对网页更改的操作,比如首页,尾页,下一页等:
注意:值的传递和点击切换.
<div class="fanye">
<td th:text="${pagemsg.currPaged1}"></td>//当前页
<td>/</td>
<td th:text="${pagemsg.totalPagezy1}"></td>//当前页
<a th:href="@{/show(currPaged1=1)}">首页</a>
<td th:if="${pagemsg.currPaged1!=1}">//什么情况下才会显示出上一页的判断
<a th:href="@{/show(currPaged1=${pagemsg.currPaged1-1})}">上一页</a>
</td>
//什么情况下显示出下一页的判断
<td th:if="${pagemsg.currPaged1}!=${pagemsg.totalPagezy1}">
<a th:href="@{/show(currPaged1=${pagemsg.currPaged1+1})}">下一页</a>
</td>
//最后一页
<a th:href="@{/show(currPaged1=${pagemsg.totalPagezy1})}">尾页</a>
</div>
到此,分页查询关键技术实施完毕,话不多说,看效果图:
这是第一页,也是点击进去之后的默认页:
下面 这是点击下一页之后的页面:
下面这是点击尾页之后的页面:
下面是点击上一页之后的页面:
下面这是点击首页的页面:
执行完毕,总体下来主要是实现类中和首尾页比较费脑,其他都还简单,到此就结束了,感谢观看,有什么不足或者更好建议,欢迎吐槽,一名正在编码路上的少年,在这里算是班门弄斧了,希望各位在探索技术的道路上劈波斩浪,把bug斩在刀下;再见咯!