[简单易懂]spring-boot在mysql中使用分页查询回显页面

个人学习日记,记录在学习过程的中的各种算法操作和技术;

关于分页查询,分页是当有大量数据的时候,不用一次性全部显示出来,从而造成数据显示缓慢.

本项目中蕴含的技术有: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>&nbsp;

                <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斩在刀下;再见咯!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道而起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值