/*
|
* Copyright (c) 2011-2020, baomidou (jobob@qq.com). <p> 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 <p>
|
* https://www.apache.org/licenses/LICENSE-2.0 <p> 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<T> implements Serializable {
|
|
/**
|
* 获取排序信息,排序的字段和正反序
|
*
|
* @return 排序信息
|
*/
|
List<Object> orders() {
|
return null;
|
}
|
|
/**
|
* KEY/VALUE 条件
|
*
|
* @return ignore
|
* @deprecated 3.4.0 @2020-06-30
|
*/
|
@Deprecated
|
Map<Object, Object> 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;
|
}
|
|
/**
|
* 内部什么也不干
|
* <p>
|
* 只是为了 json 反序列化时不报错
|
* </p>
|
*/
|
IPageVO<T> 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<T> getRecords() {
|
return null;
|
}
|
|
/**
|
* 设置分页记录列表
|
*/
|
IPageVO<T> setRecords(List<T> records) {
|
return null;
|
}
|
|
/**
|
* 当前满足条件总行数
|
*
|
* @return 总条数
|
*/
|
long getTotal() {
|
return 0l;
|
}
|
|
/**
|
* 设置当前满足条件总行数
|
*/
|
IPageVO<T> setTotal(long total) {
|
return null;
|
}
|
|
/**
|
* 获取每页显示条数
|
*
|
* @return 每页显示条数
|
*/
|
long getSize() {
|
return 0;
|
}
|
|
/**
|
* 设置每页显示条数
|
*/
|
IPageVO<T> setSize(long size) {
|
return null;
|
}
|
|
/**
|
* 当前页
|
*
|
* @return 当前页
|
*/
|
long getCurrent() {
|
return 0l;
|
}
|
|
/**
|
* 设置当前页
|
*/
|
IPageVO<T> setCurrent(long current) {
|
return null;
|
}
|
|
/**
|
* IPageVO 的泛型转换
|
*
|
* @param mapper
|
* 转换函数
|
* @param <R>
|
* 转换后的泛型
|
* @return 转换泛型后的 IPageVO
|
*/
|
@SuppressWarnings("unchecked")
|
<R> IPageVO<R> convert(Function<? super T, ? extends R> mapper) {
|
List<R> collect = this.getRecords().stream().map(mapper).collect(toList());
|
return ((IPageVO<R>)this).setRecords(collect);
|
}
|
|
/**
|
* 老分页插件不支持
|
* <p>
|
* MappedStatement 的 id
|
*
|
* @return id
|
* @since 3.4.0 @2020-06-19
|
*/
|
String countId() {
|
return null;
|
}
|
|
}
|