JAVAEE---分页

简介: JAVAEE---分页

1.分页

1、通过分页,我们不用一次性将所有的数据查出来,只需先查出来一部分,可以减少数据库的IO数据量的传输,降低数据库读写压力,从而提高数据库响应速度

2、页面也不用一次性显示所有的数据,可以减少浏览器和服务器之间大量数据的IO传输,从而提高服务器的响应速度

3、我们可能值需要很多信息中少数的几条,那么传输其他多余的数据就是无形之中对于资源的浪费,分页可以减少资源的浪费

1.2分页的步骤

首先先建一个类,写上需要的属性,再写一个起始的下标

public class PageBean {
  private int page = 1;// 页码
  private int rows = 10;// 页大小
  private int total = 0;// 总记录数
  private boolean pagination = true;// 是否分页
  public PageBean() {
    super();
  }
  public int getPage() {
    return page;
  }
  public void setPage(int page) {
    this.page = page;
  }
  public int getRows() {
    return rows;
  }
  public void setRows(int rows) {
    this.rows = rows;
  }
  public int getTotal() {
    return total;
  }
  public void setTotal(int total) {
    this.total = total;
  }
  public void setTotal(String total) {
    this.total = Integer.parseInt(total);
  }
  public boolean isPagination() {
    return pagination;
  }
  public void setPagination(boolean pagination) {
    this.pagination = pagination;
  }
  /**
   * 获得起始记录的下标
   * 
   * @return
   */
  public int getStartIndex() {
    return (this.page - 1) * this.rows;
  }
  @Override
  public String toString() {
    return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
  }
/**
   * 带分类的模糊查询
   * @param sql
   * @param clz
   * @param pageBean
   * @return
   * @throws Exception
   */
  public List<T> executeQuery(String sql,Class clz,PageBean pageBean) throws Exception{
    List<T> list = new ArrayList<T>();
    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    if(pageBean != null && pageBean.isPagination()) {
      String countSQL = getCountSQL(sql);
      conn = DBAccess.getConnection();
      pst = conn.prepareStatement(countSQL);
      rs = pst.executeQuery();
      if(rs.next()) {
        pageBean.setTotal(rs.getObject("n").toString());
      }
      String pageSQL = getPageSQL(sql,pageBean);
      conn = DBAccess.getConnection();
      pst = conn.prepareStatement(pageSQL);
      rs = pst.executeQuery();
    }else {
      conn = DBAccess.getConnection();
      pst = conn.prepareStatement(sql);
      rs = pst.executeQuery();
    }
    while(rs.next()) {
      T t = (T) clz.newInstance();
//      拿到clz对应的所有属性对象
      Field[] fields = clz.getDeclaredFields();
      for (Field f : fields) {
        f.setAccessible(true);
//        System.out.println(f.getName());
        f.set(t, rs.getObject(f.getName()));
      }
      list.add(t);
    }
    return list;
  }

2.解析BaseDao

2.1先定义它的属性:

2.2再进行判断

3.案列及效果

package com.xuyahui.Dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.xuyahui.entity.Book;
import com.xuyahui.util.BaseDao;
import com.xuyahui.util.DBAccess;
import com.xuyahui.util.PageBean;
import com.xuyahui.util.StringUtils;
/**
 * BookDao:  操作的是书籍表
 * @author 86155
 *
 */
public class BookDao extends BaseDao<Book>{
  public List<Book> list1(Book book,PageBean pageBean) throws Exception{
    List<Book> list = new ArrayList<Book>();
    Connection conn = DBAccess.getConnection();
    String sql = "select * from t_mvc_book";
    String bname = book.getBname();
    if(StringUtils.isNotBlank(bname)) {
      sql += " and bname like '%"+bname+"%'";
    }
    PreparedStatement pst = conn.prepareStatement(sql);
    ResultSet rs = pst.executeQuery();
    while(rs.next()) {
      Book b = new Book();
      b.setBid(rs.getInt("bid"));
      b.setBname(rs.getString("bname"));
      b.setPrice(rs.getFloat("price"));
      list.add(b);
    }
    return list;
  }
  public List<Book> list2(Book book,PageBean pageBean) throws Exception{
    String sql = "select * from t_mvc_book 1=1";
    String bname = book.getBname();
    if(StringUtils.isNotBlank(bname)) {
      sql += " and bname like '%"+bname+"%'";
    }
    return super.executeQuery(sql, Book.class, pageBean);
  }
  @Test
  public void test1() throws Exception { 
    System.out.println("test1...");
    BookDao bookDao = new BookDao();
    Book book = new Book();
    book.setBname("圣墟");
    PageBean pageBean = new PageBean();
    List<Book> list = bookDao.list1(book, pageBean);
    for (Book b : list) {
      System.out.println(b);
    }
  }

效果

 


目录
相关文章
|
机器学习/深度学习 存储 算法
如何将照片或者视频中的背景图抠掉,机器学习开源项目使用 | 机器学习
如何将照片或者视频中的背景图抠掉,机器学习开源项目使用 | 机器学习
如何将照片或者视频中的背景图抠掉,机器学习开源项目使用 | 机器学习
|
数据可视化 数据挖掘 Python
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(下)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
11月前
|
存储 供应链 安全
StarTowerChain:DePIN 引领下的区块链璀璨之星
StarTowerChain 是基于 DePIN 理念的区块链项目,通过将分散的智能设备转化为强大节点,实现资源共享与协作。它采用先进的加密技术和分布式存储,确保数据安全和系统稳定性。StarTowerChain 应用于数字货币交易、供应链金融和物联网等领域,提供安全、高效的服务,并通过社区参与推动持续创新。
|
Java Shell C++
Springboot加载注入bean的方式
本文详细介绍了Spring Boot中Bean的装配方法。首先讲解了使用@Component、@Service、@Controller、@Repository等注解声明Bean的方式,并解释了这些注解之间的关系及各自适用的层次。接着介绍了通过@Configuration和@Bean注解定义Bean的方法,展示了其灵活性和定制能力。最后讨论了@Component与@Bean的区别,并提供了在Spring Boot应用中装配依赖包中Bean的三种方法:使用@ComponentScan注解扫描指定包、使用@Import注解导入特定Bean以及在spring.factories文件中配置Bean。
793 0
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
278 0
|
机器学习/深度学习 Serverless Python
`sklearn.metrics`是scikit-learn库中用于评估机器学习模型性能的模块。它提供了多种评估指标,如准确率、精确率、召回率、F1分数、混淆矩阵等。这些指标可以帮助我们了解模型的性能,以便进行模型选择和调优。
`sklearn.metrics`是scikit-learn库中用于评估机器学习模型性能的模块。它提供了多种评估指标,如准确率、精确率、召回率、F1分数、混淆矩阵等。这些指标可以帮助我们了解模型的性能,以便进行模型选择和调优。
|
缓存 负载均衡 Kubernetes
5 种主流API网关技术选型,yyds! 下
5 种主流API网关技术选型,yyds! 下
|
存储 缓存 Linux
Linux驱动开发(锁和信号量的概念及实现原理)
Linux驱动开发(锁和信号量的概念及实现原理)
265 0
|
Windows
建立Windows Embedded Compact 7开发环境
 欢迎下载试用新一代Windows Embedded CE(Compact 7)http://www.microsoft.com/windowsembedded/zh-cn/products/windowsce/default.