基于mybatis--pageHelper的分页工具类实现带参查询工具类pageInfo

mybatis的分页工具已经写得很完美了,还可以根据各种数据库方言进行改变,唯一的遗憾的就是不支持带参查询。我将其pageInfo改进了一下。实现了带参查询~

记录一下:

package com.yyc.util;

import com.github.pagehelper.PageHelper;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.List;

public class PageInfo<T> extends com.github.pagehelper.PageInfo<T> {

    private static String url;// 主要是用来获取查询的参数
    


    public PageInfo(List<T> list) {
        super(list);


    }

    public static String startPage(){

        // 从本地线程中获取请求
        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();

        // 因为pageHelper里面没有给pageNum和pageSize赋初始值

        // 从请求中接收当前页号
        String pageNumStr = request.getParameter("pageNum");
        int pageNum = Integer.parseInt(Util.isEmpty(pageNumStr) ? "1" : pageNumStr);
//
//        // 从请求中接收当前的记录数
        String pageSizeStr = request.getParameter("pageSize");
        int pageSize = Integer.parseInt(Util.isEmpty(pageSizeStr) ? "5" : pageSizeStr);

        PageHelper.startPage(pageNum, pageSize);

        // 从请求当中获取请求地址
        url = request.getRequestURI() + "?1=1";

        // 从当前请求中获取请求参数
        Enumeration<String> parameterNames = request.getParameterNames();

        while (parameterNames.hasMoreElements()) {

            // 获取每一个请求参数的名字
            String name = parameterNames.nextElement();
            // 获取每一个请求参数的值
            String value = request.getParameter(name);

            // 在拼接参数的时候先要过滤掉常驻的参数,在进行拼接
            if (!"1".equals(name) && !"pageNum".equals(name) && !"pageSize".equals(name) && Util.isNotEmpty(value)) {


                // 如果查询条件中带有中文的话,浏览器中编码集不一致,可能造成请求中带有乱码从而导致无法向后端发起一个中确的请求
                // 所以这里要讲value转一下编码
                try {
                    value = URLEncoder.encode(value, "UTF-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                    value = "";
                }
                url += "&" + name + "=" + value;
            }
        }
        return url;
    }
    public String getUrl() {
        return url;
    }
}

使用

 PageInfo.startPage();// 这里的PageInfo都是自己写的
 // 调用service层里面的查询全部方法,和mybatis-pagehelper一样,只传入一个list即可
 PageInfo pageInfo = new PageInfo<>(list);

查询的参数不用管,直接通过url来获取了。

controller直接如下写:

  @RequestMapping("/list")
    public PageInfo<Employee> list(Employee employee) {

        PageInfo.startPage();
        return new PageInfo<>(employeeService.list(employee));
    }

就可以实现带待参查询分页。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值