在线直播源码,java数据分页几种方式
1.使用PageUtils
Service:
/**
* 分页查询
*
* @param params 查询条件
* @return PageUtils
*/
PageUtils queryPage(Map<String, Object> params);
ServiceImpl:
Page<数据库对象实体> page = this.selectPage(
new Query<数据库对象实体>(params).getPage(),
new EntityWrapper<数据库对象实体>()
//MybatisPlus sql语句
.eq(字段,"匹配值")
//具体用法详情百度
.orderBy(按照排序的数据库字段, true)
);
return new PageUtils(page);
2.使用Page
Service:
/**
* 分页查询
* @param params 查询条件
* @return
*/
Page<数据库对象实体> queryPage(Map<String, Object> params);
ServiceImpl:
Page<数据库对象实体> page = new Page<>(Public.mapTo(params.get("page"), 1), Public.mapTo(params.get("pageSize"), 10));
//可以手写sql,提高sql的灵活性(但是题主人懒,还是喜欢使用 MysqlbatisPlus 那种方式),但是可以锻炼你的SQL书写能力
List<数据库对象实体> list = Dao.方法名(page, params);
Page<数据库对象实体> pageInfo = page.setRecords(list);
return pageInfo;
Dao:
List<数据库对象实体> 方法名 (Pagination page,Map<String, Object> map);
//具体的SQL就不写了
3.Jpa分页
需要一个分页类 Page4Navigator
Page<T> pageFromJPA;
int navigatePages;
int totalPages;
int number;
long totalElements;
int size;
int numberOfElements;
List<T> content;
boolean isHasContent;
boolean first;
boolean last;
boolean isHasNext;
boolean isHasPrevious;
int[] navigatepageNums;
public Page4Navigator() {
//这个空的分页是为了 Redis 从 json格式转换为 Page4Navigator 对象而专门提供的
}
public Page4Navigator(Page<T> pageFromJPA,int navigatePages) {
this.pageFromJPA = pageFromJPA;
this.navigatePages = navigatePages;
totalPages = pageFromJPA.getTotalPages();
number = pageFromJPA.getNumber() ;
totalElements = pageFromJPA.getTotalElements();
size = pageFromJPA.getSize();
numberOfElements = pageFromJPA.getNumberOfElements();
content = pageFromJPA.getContent();
isHasContent = pageFromJPA.hasContent();
first = pageFromJPA.isFirst();
last = pageFromJPA.isLast();
isHasNext = pageFromJPA.hasNext();
isHasPrevious = pageFromJPA.hasPrevious();
calcNavigatepageNums();
}
private void calcNavigatepageNums() {
int navigatepageNums[];
int totalPages = getTotalPages();
int num = getNumber();
//当总页数小于或等于导航页码数时
if (totalPages <= navigatePages) {
navigatepageNums = new int[totalPages];
for (int i = 0; i < totalPages; i++) {
navigatepageNums[i] = i + 1;
}
} else { //当总页数大于导航页码数时
navigatepageNums = new int[navigatePages];
int startNum = num - navigatePages / 2;
int endNum = num + navigatePages / 2;
if (startNum < 1) {
startNum = 1;
//(最前navigatePages页
for (int i = 0; i < navigatePages; i++) {
navigatepageNums[i] = startNum++;
}
} else if (endNum > totalPages) {
endNum = totalPages;
//最后navigatePages页
for (int i = navigatePages - 1; i >= 0; i--) {
navigatepageNums[i] = endNum--;
}
} else {
//所有中间页
for (int i = 0; i < navigatePages; i++) {
navigatepageNums[i] = startNum++;
}
}
}
this.navigatepageNums = navigatepageNums;
}
以上就是 在线直播源码,java数据分页几种方式,更多内容欢迎关注之后的文章
标签:java,navigatePages,int,Page,直播,params,navigatepageNums,源码,pageFromJPA From: https://www.cnblogs.com/yunbaomengnan/p/17384817.html