Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
master-5.0
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
svn
master-5.0
Commits
48ae4622
提交
48ae4622
authored
10月 29, 2019
作者:
liupengfei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
上级
ef705a91
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
176 行增加
和
0 行删除
+176
-0
PageMap.java
core/src/main/java/com/zrqx/core/util/page/PageMap.java
+176
-0
没有找到文件。
core/src/main/java/com/zrqx/core/util/page/PageMap.java
0 → 100644
浏览文件 @
48ae4622
package
com
.
zrqx
.
core
.
util
.
page
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serializable
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
com.github.pagehelper.Page
;
import
lombok.Data
;
@ApiModel
(
value
=
"PageMap"
,
description
=
"分页分组工具类"
)
@Data
public
class
PageMap
<
K
,
V
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"当前页"
)
private
int
pageNum
;
@ApiModelProperty
(
"每页的数量"
)
private
int
pageSize
;
@ApiModelProperty
(
"当前页的数量"
)
private
int
size
;
@ApiModelProperty
(
"当前页面第一个元素在数据库中的行号"
)
private
int
startRow
;
@ApiModelProperty
(
"当前页面最后一个元素在数据库中的行号"
)
private
int
endRow
;
@ApiModelProperty
(
"总记录数"
)
private
long
total
;
@ApiModelProperty
(
"总页数"
)
private
int
pages
;
@ApiModelProperty
(
"结果集"
)
private
Map
<
K
,
V
>
map
;
@ApiModelProperty
(
"前一页"
)
private
int
prePage
;
@ApiModelProperty
(
"下一页"
)
private
int
nextPage
;
@ApiModelProperty
(
"是否为第一页"
)
private
boolean
isFirstPage
=
false
;
@ApiModelProperty
(
"是否为最后一页"
)
private
boolean
isLastPage
=
false
;
@ApiModelProperty
(
"是否有前一页"
)
private
boolean
hasPreviousPage
=
false
;
@ApiModelProperty
(
"是否有下一页"
)
private
boolean
hasNextPage
=
false
;
@ApiModelProperty
(
"导航页码数"
)
private
int
navigatePages
;
@ApiModelProperty
(
"所有导航页号"
)
private
int
[]
navigatepageNums
;
@ApiModelProperty
(
"导航条上的第一页"
)
private
int
navigateFirstPage
;
@ApiModelProperty
(
"导航条上的最后一页"
)
private
int
navigateLastPage
;
public
PageMap
(){
}
public
PageMap
(
List
<?>
list
,
Map
<
K
,
V
>
result
)
{
this
(
list
,
8
);
this
.
map
=
result
;
}
/**
* 包装Page对象
*
* @param list page结果
* @param navigatePages 页码数量
*/
public
PageMap
(
List
<?>
list
,
int
navigatePages
)
{
if
(
list
instanceof
Page
)
{
Page
page
=
(
Page
)
list
;
this
.
pageNum
=
page
.
getPageNum
();
this
.
pageSize
=
page
.
getPageSize
();
this
.
pages
=
page
.
getPages
();
this
.
size
=
page
.
size
();
this
.
total
=
page
.
getTotal
();
//由于结果是>startRow的,所以实际的需要+1
if
(
this
.
size
==
0
)
{
this
.
startRow
=
0
;
this
.
endRow
=
0
;
}
else
{
this
.
startRow
=
page
.
getStartRow
()
+
1
;
//计算实际的endRow(最后一页的时候特殊)
this
.
endRow
=
this
.
startRow
-
1
+
this
.
size
;
}
}
else
if
(
list
instanceof
Collection
)
{
this
.
pageNum
=
1
;
this
.
pageSize
=
list
.
size
();
this
.
pages
=
this
.
pageSize
>
0
?
1
:
0
;
this
.
size
=
list
.
size
();
this
.
total
=
list
.
size
();
this
.
startRow
=
0
;
this
.
endRow
=
list
.
size
()
>
0
?
list
.
size
()
-
1
:
0
;
}
if
(
list
instanceof
Collection
)
{
this
.
navigatePages
=
navigatePages
;
//计算导航页
calcNavigatepageNums
();
//计算前后页,第一页,最后一页
calcPage
();
//判断页面边界
judgePageBoudary
();
}
}
/**
* 计算导航页
*/
private
void
calcNavigatepageNums
()
{
//当总页数小于或等于导航页码数时
if
(
pages
<=
navigatePages
)
{
navigatepageNums
=
new
int
[
pages
];
for
(
int
i
=
0
;
i
<
pages
;
i
++)
{
navigatepageNums
[
i
]
=
i
+
1
;
}
}
else
{
//当总页数大于导航页码数时
navigatepageNums
=
new
int
[
navigatePages
];
int
startNum
=
pageNum
-
navigatePages
/
2
;
int
endNum
=
pageNum
+
navigatePages
/
2
;
if
(
startNum
<
1
)
{
startNum
=
1
;
//(最前navigatePages页
for
(
int
i
=
0
;
i
<
navigatePages
;
i
++)
{
navigatepageNums
[
i
]
=
startNum
++;
}
}
else
if
(
endNum
>
pages
)
{
endNum
=
pages
;
//最后navigatePages页
for
(
int
i
=
navigatePages
-
1
;
i
>=
0
;
i
--)
{
navigatepageNums
[
i
]
=
endNum
--;
}
}
else
{
//所有中间页
for
(
int
i
=
0
;
i
<
navigatePages
;
i
++)
{
navigatepageNums
[
i
]
=
startNum
++;
}
}
}
}
/**
* 计算前后页,第一页,最后一页
*/
private
void
calcPage
()
{
if
(
navigatepageNums
!=
null
&&
navigatepageNums
.
length
>
0
)
{
navigateFirstPage
=
navigatepageNums
[
0
];
navigateLastPage
=
navigatepageNums
[
navigatepageNums
.
length
-
1
];
if
(
pageNum
>
1
)
{
prePage
=
pageNum
-
1
;
}
if
(
pageNum
<
pages
)
{
nextPage
=
pageNum
+
1
;
}
}
}
/**
* 判定页面边界
*/
private
void
judgePageBoudary
()
{
isFirstPage
=
pageNum
==
1
;
isLastPage
=
pageNum
==
pages
||
pages
==
0
;;
hasPreviousPage
=
pageNum
>
1
;
hasNextPage
=
pageNum
<
pages
;
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论