通用分页分析以及代码实现

一、通用分页分析

通用分页核心思路

将上一次查询请求再发一次,只不过页码变了

分页三要素(PageBean)

page 页码 视图层传递过来
rows 页大小 视图层传递过来
total 总记录数 后台查出来

pagination 是否分页 视图层传递过来

后台

entity
dao
第一次查满足条件的总记录数
第二次查指定页码并满足条件的记录
二次查询的条件要一致

控制层(Servlet)

二、要实现的效果

在这里插入图片描述

三、实现

打开连接,导入所需要用的表

在这里插入图片描述

打开eclipse创建准备工作

在这里插入图片描述
先编写一个实体类

package com.mengyuan.entity;

public class Book {
   
	private int bid;
	private String bname;
	private float price;

	@Override
	public String toString() {
   
		return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";
	}

	public int getBid() {
   
		return bid;
	}

	public void setBid(int bid) {
   
		this.bid = bid;
	}

	public String getBname() {
   
		return bname;
	}

	public void setBname(String bname) {
   
		this.bname = bname;
	}

	public float getPrice() {
   
		return price;
	}

	public void setPrice(float price) {
   
		this.price = price;
	}

}

分页的核心思想:url、展示数据量、上次查询的条件,下一次请求都不会发生改变。

创建一个BaseDao,利用泛型的形式编写实现通用分页的方法

package com.mengyuan.util;

import java.lang.reflect.Field;
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 com.mengyuan.entity.Book;

public class BaseDao<T> {
   
	public List<T> executeQuery(String sql,Class clz,PageBean pageBean) throws SQLException, InstantiationException, IllegalAccessException{
   
		List<T> list=new ArrayList<T>();
		Connection con = DBAccess.getConnection();
		PreparedStatement pst = null;
		ResultSet rs =null;
		if(pageBean!=null&&pageBean.isPagination()) {
   
//			想要分页-----》列表需求	
//			查询出符合条件的总记录数
			String countSql=getCountSql(sql);
			pst = con.prepareStatement(countSql);
			rs=pst.executeQuery();
			if(rs.next()) {
   
				pageBean.setTotal(rs.getObject(1).toString());
			}
//			展示想要看到的数据,就比如说第三页的十条数据
			String pageSql=getPageSql(sql,pageBean);
			pst = con.prepareStatement(pageSql);
			rs=pst.executeQuery();
		}else {
   
//			不想分页--》下拉框需求
			pst = con.prepareStatement(sql);
			rs=pst.executeQuery();
			
		}
		
	
		while(rs.next()) {
   
//			list.add(new Book(rs.getInt("bookId"), rs.getString("bookName"), rs.getInt("price")));
			/**
			 * Book book=new Book();
			 * b.setBookId(rs.getInt(
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教学-传智播客-项目视频经典之作巴巴运动网106集-27实现Web层的分页功能源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\hibernate-distribution-3.3.2.GA\lib\required" 目录下的jar文件: (共7个) antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar javassist-3.9.0.GA.jar jta-1.1.jar slf4j-api-1.5.8.jar slf4j-nop-1.5.2.jar (二)、JPA: 位于 "\Hibernate\hibernate-entitymanager3.4.0.GA" 目录下的jar文件: hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar (三)、Spring: 位于 "\spring-framework-2.5.5\dist" 目录下的jar文件: spring.jar 位于 "\spring-framework-2.5.5\lib\aspectj" 目录下的jar文件: (共3个) aspectjrt.jar aspectjweaver.jar 位于 "\spring-framework-2.5.5\lib\cglib" 目录下的jar文件: (共1个) cglib-nodep-2.1_3.jar 位于 "\spring-framework-2.5.5\lib\j2ee\" 目录下的jar文件: common-annotations.jar 位于 "\spring-framework-2.5.5\lib\jakarta-commons" 目录下的jar文件: commons-dbcp.jar commons-pool.jar commons-logging.jar (四)、Struts: 位于 "\Struts\struts-1.3.10\struts-1.3.10-all\struts-1.3.10\lib" 目录下的jar文件: (共20个) antlr-2.7.2.jar(与Hibernate所含antlr-2.7.6.jar文件重复,删除) bsf-2.3.0.jar commons-beanutils-1.8.0.jar commons-chain-1.2.jar commons-digester-1.8.jar commons-fileupload-1.1.1.jar commons-io-1.1.jar commons-logging-1.0.4.jar commons-validator-1.3.1.jar jstl-1.0.2.jar(改为:\spring-framework-2.5.5\lib\j2ee\jstl.jar) oro-2.0.8.jar standard-1.0.6.jar(改为:\spring-framework-2.5.5\lib\jakarta-taglibs\standard.jar) struts-core-1.3.10.jar struts-el-1.3.10.jar struts-extras-1.3.10.jar struts-faces-1.3.10.jar struts-mailreader-dao-1.3.10.jar struts-scripting-1.3.10.jar struts-taglib-1.3.10.jar struts-tiles-1.3.10.jar (五)、Spring+Struts: \spring-framework-2.5.5\dist\modules\spring-webmvc-struts.jar MySQL: mysql-connector-java-5.1.16-bin.jar 运行: http://localhost:8090/control/center/main.do

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值