欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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/
相关标签: java