使用PageHelper来写个简单的模糊查询分页

首先想要了解这个插件的使用,可以去下面的网址查看,我这里只是简单的运用,而更多的操作则需要自己探索

github:github
中文文档:中文文档

  • 首先按照文档来看我们先导入所需要的包
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.3</version>
</dependency>

如果没有使用maven,则可以通过导入jar包,具体见文档

  • 接着我们需要配置拦截器插件(我使用的是mybatis配置文件上)
<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

这里我们需要注意的是配置的顺序

plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?, 
typeAliases?, typeHandlers?, 
objectFactory?,objectWrapperFactory?, 
plugins?, 
environments?, databaseIdProvider?, mappers?

而plugin标志具体参数的配置和用处,可以查看文档,这里不多叙述

  • 环境已经搭好,接下来自然是使用了,我们来看代码
  1. 最开始是sql查询语句
 <select id="selectByInfo" resultMap="essay">
        select * from essay_info where
        instr(headname,#{info})>0 or instr(content,#{info})>0
 </select>
  1. 先是后端@Controller的代码

page是页数也就是偏移量,默认为1
PageHelper.startPage(page,5);这句话很关键必须把它放在查询动作之前,这里表示的是从page页开始的5个数据

PageInfo pageInfo = new PageInfo<>(list)这句也是很重要,通过这个我们才能获得到想要的页码信息等

    @RequestMapping("/findEssay")
    public String findEssay(@RequestParam("info")String info,
                            @RequestParam(value = "page", defaultValue = "1")Integer page,
                            HttpServletRequest request,Model model){
        PageHelper.startPage(page,5);
        List<Essay> list = essayService.selectRanAll(info);
        PageInfo<Essay> pageInfo = new PageInfo<>(list);
        request.setAttribute("findInfo",pageInfo);
        model.addAttribute("info",info);
        return "article_find";
    }
  1. 再是jsp上回显数据的代码了
<%
                       PageInfo<Essay> pageInfo = (PageInfo<Essay>)request.getAttribute("findInfo");
                        List<Essay> list = pageInfo.getList();
                        for (Essay essay: list){
                    %>
                    <div class="article shadow">
                        <div class="article-left">
                            <img src="images/cover/201703181909057125.jpg" alt="基于laypage的layui扩展模块(pagesize.js)!" />
                        </div>
                        <div class="article-right">
                            <div class="article-title">
                                <a href="detail.jsp"><%=essay.getHeadname()%></a>
                            </div>
                            <div class="article-abstract">
                                <%=essay.getContent()%>
                            </div>
                        </div>
                        <div class="clear"></div>
                        <div class="article-footer">
                            <span><i class="fa fa-clock-o"></i>&nbsp;&nbsp;<%=essay.getDate()%></span>
                            <span class="article-author"><i class="fa fa-user"></i>&nbsp;&nbsp;<%=essay.getUserid()%></span>
                            <span><i class="fa fa-tag"></i>&nbsp;&nbsp;<a href="#"><%=essay.getLikenum()%></a></span>
                            <span class="article-viewinfo"><i class="fa fa-eye"></i>&nbsp;<%=essay.getWatch()%></span>
                            <span class="article-viewinfo"><i class="fa fa-commenting"></i>&nbsp;<%=essay.getCommentnum()%></span>
                        </div>
                    </div>
                    <%}%>

然后我们搜索字符‘a’来看看结果
在这里插入图片描述
可以看到明显找到了我们想要的

可是现在最重要的是如何进行分页浏览,其实我们同样有方法去解决

我们在尾部加上首页、上一页、下一页、尾页来进行我们想要的操作,代码如下
<center>
                        <table>
                            <tr>
                                <td colspan="4">
                                    <a href="findEssay?page=1&info=${info}">首页</a>
                                    <a href="findEssay?page=<%=pageInfo.getPrePage()%>&info=${info}">上一页</a>
                                    <a href="findEssay?page=<%=pageInfo.getNextPage()%>&info=${info}">下一页</a>
                                    <a href="findEssay?page=<%=pageInfo.getPages()%>&info=${info}">末页</a>
                                </td>
                            </tr>
                        </table>
                    </center>

写完之后可以看到
在这里插入图片描述

这样就能彻底得到我们想要的了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值