/* * Copyright (c) 2011-2020, baomidou (jobob@qq.com).

Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy of the License at

* https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language governing permissions and limitations under the * License. */ package com.panzhihua.common.model.vos; import static java.util.stream.Collectors.toList; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.function.Function; /** * 分页 Page 对象接口 * * @author * @since */ public class IPageVO implements Serializable { /** * 获取排序信息,排序的字段和正反序 * * @return 排序信息 */ List orders() { return null; } /** * KEY/VALUE 条件 * * @return ignore * @deprecated 3.4.0 @2020-06-30 */ @Deprecated Map condition() { return null; } /** * 自动优化 COUNT SQL【 默认:true 】 * * @return true 是 / false 否 */ boolean optimizeCountSql() { return true; } /** * 进行 count 查询 【 默认: true 】 * * @return true 是 / false 否 */ boolean isSearchCount() { return true; } /** * 计算当前分页偏移量 */ long offset() { long current = getCurrent(); if (current <= 1L) { return 0L; } return (current - 1) * getSize(); } /** * 最大每页分页数限制,优先级高于分页插件内的 maxLimit * * @since 3.4.0 @2020-07-17 */ Long maxLimit() { return null; } /** * 当前分页总页数 */ long getPages() { if (getSize() == 0) { return 0L; } long pages = getTotal() / getSize(); if (getTotal() % getSize() != 0) { pages++; } return pages; } /** * 内部什么也不干 *

* 只是为了 json 反序列化时不报错 *

*/ IPageVO setPages(long pages) { // to do nothing return this; } /** * 设置是否命中count缓存 * * @param hit * 是否命中 * @since 3.3.1 * @deprecated 3.4.0 @2020-06-30 缓存遵循mybatis的一或二缓 */ @Deprecated void hitCount(boolean hit) { } /** * 是否命中count缓存 * * @return 是否命中count缓存 * @since 3.3.1 * @deprecated 3.4.0 @2020-06-30 缓存遵循mybatis的一或二缓 */ @Deprecated boolean isHitCount() { return false; } /** * 分页记录列表 * * @return 分页对象记录列表 */ List getRecords() { return null; } /** * 设置分页记录列表 */ IPageVO setRecords(List records) { return null; } /** * 当前满足条件总行数 * * @return 总条数 */ long getTotal() { return 0l; } /** * 设置当前满足条件总行数 */ IPageVO setTotal(long total) { return null; } /** * 获取每页显示条数 * * @return 每页显示条数 */ long getSize() { return 0; } /** * 设置每页显示条数 */ IPageVO setSize(long size) { return null; } /** * 当前页 * * @return 当前页 */ long getCurrent() { return 0l; } /** * 设置当前页 */ IPageVO setCurrent(long current) { return null; } /** * IPageVO 的泛型转换 * * @param mapper * 转换函数 * @param * 转换后的泛型 * @return 转换泛型后的 IPageVO */ @SuppressWarnings("unchecked") IPageVO convert(Function mapper) { List collect = this.getRecords().stream().map(mapper).collect(toList()); return ((IPageVO)this).setRecords(collect); } /** * 老分页插件不支持 *

* MappedStatement 的 id * * @return id * @since 3.4.0 @2020-06-19 */ String countId() { return null; } }