前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分页-准备工作

分页-准备工作

作者头像
星哥玩云
发布2022-09-14 21:13:39
2170
发布2022-09-14 21:13:39
举报
文章被收录于专栏:开源部署

1、准备工作

1.1、sql语句

建库,键表

代码语言:javascript
复制
drop database customers;
CREATE DATABASE IF NOT EXISTS customers;
USE customers;
CREATE TABLE t_customer(
	cid CHAR(32) PRIMARY KEY,
	cname VARCHAR(40) NOT NULL,
	gender VARCHAR(6) NOT NULL, 
	birthday CHAR(10),
	cellphone VARCHAR(15) NOT NULL,
	email VARCHAR(40),
	description VARCHAR(500)
);

1.2、导包

1.3、配置文件

c3p0-config.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 这是默认配置信息 -->
	<default-config> 
		<!-- 连接四大参数配置 -->
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/customers</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">poi</property>
		<!-- 池参数配置 -->
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</default-config>
	
	<!-- 专门为oracle提供的配置信息 -->
	<named-config name="oracle-config"> 
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">poi</property>
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</named-config>

</c3p0-config>

1.4、domain对象

Customer.java

代码语言:javascript
复制
public class Customer {
	/*
	 * 对应数据库表
	 */
	private String cid;// 主键
	private String cname;// 客户名称
	private String gender;// 客户性别
	private String birthday;// 客户生日
	private String cellphone;// 客户手机
	private String email;// 客户邮箱
	private String description;// 客户的描述

	public String getCid() {
		return cid;
	}

	public void setCid(String cid) {
		this.cid = cid;
	}

	public String getCname() {
		return cname;
	}

	public void setCname(String cname) {
		this.cname = cname;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	public String getCellphone() {
		return cellphone;
	}

	public void setCellphone(String cellphone) {
		this.cellphone = cellphone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@Override
	public String toString() {
		return "Customer [cid=" + cid + ", cname=" + cname + ", gender="
				+ gender + ", birthday=" + birthday + ", cellphone="
				+ cellphone + ", email=" + email + ", description="
				+ description + "]";
	}
}

1.5、往表中插入批量数据

CustomerTest.java

代码语言:javascript
复制
public class CustomerTest {
	@Test
	public void fun1() {
		CustomerDao dao = new CustomerDao();
		for(int i = 1; i <= 300; i++) {
			Customer c = new Customer();
			
			c.setCid(CommonUtils.uuid());
			c.setCname("cstm_" + i);
			c.setBirthday("2014-07-13");
			c.setGender(i%2==0?"男":"女");
			c.setCellphone("139" + i);
			c.setEmail("cstm_" + i + "@163.com");
			c.setDescription("我是客户");
			
			dao.add(c);
		}
	}
}

CustomerDao.java

代码语言:javascript
复制
public class CustomerDao {
	private QueryRunner qr = new QueryRunner(new ComboPooledDataSource());

	/**
	 * 添加客户
	 * 
	 * @param c
	 */
	public void add(Customer c) {
		try {
			String sql = "insert into t_customer values(?,?,?,?,?,?,?)";
			Object[] params = { c.getCid(), c.getCname(), c.getGender(),
					c.getBirthday(), c.getCellphone(), c.getEmail(),
					c.getDescription()};
			qr.update(sql, params);
		} catch(SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

CommonUtils.java

代码语言:javascript
复制
public class CommonUtils {
	/**
	 * 返回一个不重复的字符串
	 * @return
	 */
	public static String uuid() {
		return UUID.randomUUID().toString().replace("-", "").toUpperCase();
	}
}

2、什么是分页

第N页/共M页 首页 上一页 1 2 3 4 5 6 7 8 9 10下一页 尾页

分页的优点:只查询一页,不用查询所有页!

3、分页数据分析

页面的数据都是由Servlet传递过来的

那么Servlet需要提供给当前页面的数据有哪些呢?

  • 当前页页码(pageCode,pc):Servlet提供; pc:如果页面没有传递当前页码,那么Servlet默认是第一页,或者按页面传递的来准!
  • 共几页(totalPage,tp):Servlet提供; tp=总记录数/每页记录数 select count(*) from t_customer;
  • 总记录数:totalpages,tp
  • 每页记录数:业务记录数或叫系统数据!10行!
  • 当前页数据(beanList):Servlet提供;

4、数据的传递:PageBean(把分布数据封装成PageBean类对象)

代码语言:javascript
复制
public class PageBean<T> {
	private List<T> beanList;// 当前页记录数, 需要传递
	private int tr;// 总记录数, 需要传递
	private int pc;// 当前页码, 需要传递
	private int ps;// 每页记录数, 需要传递
	private int tp;// 总页数, 计算
    //其他的提供get/set方法
    //但tp只提供get方法
    public int getTp(){
        tp=tr/ps;
        return tr%ps==0?tp:tp+1;
    }
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、准备工作
    • 1.1、sql语句
      • 1.2、导包
        • 1.3、配置文件
          • 1.4、domain对象
            • 1.5、往表中插入批量数据
            • 2、什么是分页
            • 3、分页数据分析
            • 4、数据的传递:PageBean(把分布数据封装成PageBean类对象)
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档