分页查询之通用查询pageQuery的代码

查询如果需要分页时,我们会在controller层接口的入参,带上自定义的PageQuery.

public ResponseResult<PageResult<Student>> getVip(HttpServletRequest request, @RequestBody PageQuery<Student> query) {
 ..............
 ..............
 ..............
}

PageResult如下:

​import java.util.ArrayList;
import java.util.List;


public class PageResult<T> {
    // 封装响应到客户端的集合
    private List<T> results = new ArrayList<>(); 
    // 封装数据库的总记录数
    private long count; 

	public PageResult(List<T> results, long count) {
		super();
		this.results = results;
		this.count = count;
	}

	public PageResult() {
		super();
	}

    public List<T> getResults() {
		return results;
	}

	public void setResults(List<T> results) {
		this.results = results;
	}

	public long getCount() {
        return count;
    }

    public void setCount(long count) {
        this.count = count;
    }


}

​

​
PageQuery如下:
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PageQuery<T> {

    private static Pattern COLUMN_CHAR_PATTERN = Pattern.compile("[A-Z]([a-z\\d]+)?");

    private List<String> sorts = new ArrayList();

    private static final List<String> SORT_ORDER = Arrays.asList("asc", "desc");

    private String order = "desc";

    //   每页显示数量
    private int count = 10;

    //	当前页码
    private int page = 0;

    private String accessStatus;

    public String getAccessStatus() {
        return accessStatus;
    }

    public void setAccessStatus(String accessStatus) {
        this.accessStatus = accessStatus;
    }

    @NotNull(groups = {PageGroup.class}, message = "分页查询对象不能为空")
    private T params;

    public PageQuery() {

    }

    public PageQuery(int count, int page, T params) {
        this.count = count;
        this.page = page;
        this.params = params;
    }

    public String getOrder() {
        if (null == order || "".equals(order.trim())) {
            return "desc";
        }
        return order;
    }

    public void setOrder(String order) {
        if (order != null && SORT_ORDER.indexOf(order) < 0) {
            order = "desc";
        }
        this.order = order;
    }

    public T getParams() {
        return params;
    }

    public void setParams(T params) {
        this.params = params;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public List<String> getSorts() {
        return sorts;
    }

    public void setSorts(List<String> sorts) {
        List<String> list = new ArrayList(sorts.size());
        for (String sort : sorts) {
            String result = String.valueOf(sort.charAt(0)).toUpperCase().concat(sort.substring(1));
            StringBuilder sb = new StringBuilder();
            Matcher matcher = COLUMN_CHAR_PATTERN.matcher(result);
            while (matcher.find()) {
                String word = matcher.group();
                sb.append(word.toLowerCase());
                sb.append(matcher.end() == result.length() ? "" : "_");
            }
            list.add(sb.toString().toUpperCase());
        }
        sorts.clear();
        sorts.addAll(list);
    }

    private String dayPlanId;

    public String getDayPlanId() {
        return dayPlanId;
    }

    public void setDayPlanId(String dayPlanId) {
        this.dayPlanId = dayPlanId;
    }

    @Override
    public String toString() {
        return "PageQuery{" +
                "sorts=" + sorts +
                ", order='" + order + '\'' +
                ", count=" + count +
                ", page=" + page +
                ", accessStatus='" + accessStatus + '\'' +
                ", params=" + params +
                ", dayPlanId='" + dayPlanId + '\'' +
                '}';
    }
}

​

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值