springboot中使用自定义的分页工具PageUtils
程序员文章站
2022-05-26 14:42:38
...
springboot中使用自定义的分页工具PageUtils
分页工具要包括的主要功能:
1、数据查询功能,最基础的
2、数据总条数和总页数,方便提供给前端处理
3、规范化的数据形式,这里使用json
代码
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* 分页工具
*/
//@Compoent注解,将该类加入到Spring容器中
@Component
//@Slf4j注解,打印日志时使用
@Slf4j
public class PageUtil {
//这里使用org.springframework.jdbc.core.JdbcTemplate,使用jdbc的方式
@Autowired
private JdbcTemplate jdbc;
/**
*该方法统计查询的所有数据
* @param sql
* @param cla
* @return
*/
public Object queryOneColumnForSigetonRow(String sql, Class cla){
Object result=null;
try{
result=jdbc.queryForObject(sql,cla);
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
/**
* 通用分页过程
* @param sql
* @param page
* @param pageSize
* @return
*/
public PageList page(String sql, int page, int pageSize) throws Exception {
String rowsql="select count(*) from ("+sql+") temp"; //查询总行数sql
int pages = 0; //总页数
int rows=(Integer)queryOneColumnForSigetonRow(rowsql, Integer.class); //查询总行数
//判断页数,如果是页大小的整数倍就为rows/pageRow如果不是整数倍就为rows/pageRow+1
if (rows % pageSize == 0) {
pages = rows / pageSize;
} else {
pages = rows / pageSize + 1;
}
//查询第page页的数据sql语句
if(page<=1){
sql+=" limit 0,"+pageSize;
}else{
sql+=" limit "+((page-1)*pageSize)+","+pageSize;
}
//查询第page页数据
List list=jdbc.queryForList(sql);
log.info(sql);
//
List tempList =new ArrayList();
for(int i=0;i<list.size();i++){
Map map =(Map)list.get(i);
Map<String, Object> map1 = new HashMap<String,Object>();
Iterator<String> it = map.keySet().iterator(); //map.keySet()得到的是set集合,
//该集合内的元素为map的所有key值,可以使用迭代器遍历
while(it.hasNext()){
String key = it.next();
//System.out.println("key值:"+key+" value值:"+map.get(key));
map1.put(key.toLowerCase(),map.get(key));
}
tempList.add(map1);
}
//返回分页格式数据
PageList pl =new PageList();
pl.setPage(page); //设置显示的当前页数
pl.setPages(pages); //设置总页数
pl.setList(tempList); //设置当前页数据
pl.setTotalRows(rows); //设置总记录数
return pl;
}
}
[1]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
[2]: https://mermaidjs.github.io/
[3]: https://mermaidjs.github.io/
[4]: http://adrai.github.io/flowchart.js/