day26(分页查询)
分页查询思路

问题: 服务器向浏览器想用数据很多的时候可以对数据进行封装。
domain层 封装数据
package com.baidu.domain;
import java.util.List;
public class PageBean {
//总页数
private int totalPage;
//总条数
private int totalCount;
//数据集合
private List<Product> list;
//当前页
private int currPage;
//页数显示信息数
private int pageSize;
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public List<Product> getList() {
return list;
}
public void setList(List<Product> list) {
this.list = list;
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
浏览器只需要使用项服务器发送页数,服务器会发送pageBean对象进行返回。
Service层 处理业务
public PageBean getPageListProduct(int currPage) throws Exception {
PageBean pb=new PageBean();
//设置页面数
pb.setPageSize(10);
pb.setCurrPage(currPage);
//获取集合列表
List<Product> list = pd.getPageListProduct(pb);
pb.setList(list);
for (Product product : pb.getList()) {
System.out.println(product);
}
//获取总条数
int l = (int) pd.getPageProductAcount();
pb.setTotalCount(l);
//获取总页数
if (l%10==0) {
pb.setTotalPage(l/10);
}else{
pb.setTotalPage((l/10)+1);
}
return pb;
}
dao层
public List<Product> getPageListProduct(PageBean pb) throws SQLException {
QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
String sql="select * from product limit ?,?";
List<Product> list = qr.query(sql, new BeanListHandler<Product>(Product.class),(pb.getCurrPage()-1)*pb.getPageSize(),pb.getPageSize());
return list;
}
public long getPageProductAcount() throws SQLException {
QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
String sql="Select count(*) from product";
long l = (Long)qr.query(sql, new ScalarHandler());
return l;
}
JDBCUtils
public class JDBCUtils {
private static final ComboPooledDataSource cpd=new ComboPooledDataSource();
/**
* 获取连接对象
* @return
* @throws SQLException
*/
public static Connection getConnection() throws SQLException{
Connection conn = cpd.getConnection();
return conn;
}
/**
* 获取数据源
* @return
*/
public static DataSource getDataSource(){
return cpd;
}
}
day26(分页查询)的更多相关文章
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- mysql 分页查询
mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...
- MongoDB 分页查询的方法及性能
最近有点忙,本来有好多东西可以总结,Redis系列其实还应该有四.五.六...不过<Redis in Action>还没读完,等读完再来总结,不然太水,对不起读者. 自从上次Redis之后 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- SubSonic3.0插件分页查询速度测试
使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
随机推荐
- 关于控制反转(IOC)容器 ,依赖注入(DI)模式必读文章收集
推荐一篇国外設計大師Martin Fowler的大作:Inversion of Control Containers and the Dependency Injection pattern http ...
- spring boot (二):使用fastJson解析json数据
如果我们想在spring boot中使用第三方的json解析框架: 1)我们需要在pom.xml文件中引入第三方包的依赖; 2)实现方法: 方法1 需要在启动类中继承WebMvcConfigurerA ...
- Luogu 2059 [JLOI2013]卡牌游戏 - 概率DP
Solution 设状态 $F[i][j] $为 还剩余 $i$ 个人时, 第 $j$ 个人 的胜率. 边界: $F[1][1] = 1$(只剩下一个人了). 这样设置状态就能使 $i-1$ 个人的答 ...
- Nodejs学习笔记:基础
本文章主要记录Nodejs基础知识点 安装 首先从Node.js官网下载安装包,并添加到环境变量.然后打开命令行,输入 node --version ,可查看版本信息 npm是Node.js的包管理工 ...
- 移动端Android软键盘遮住输入框解决!
在使用vue的情况下,在输入框中添加 <textarea class="textarea" @click="isAndroid" :maxlength=& ...
- Sprign中常用注解
1.@Component 创建类对象,相当于配置<bean/> 2.@Service 与 @Component功能相同 2.1写在ServiceImpl类上 (建议在ServiceImpl ...
- django之补充
一 QuerySet类型 QuerySet类型:只和orm有关,如果一涉及数据库,就会有QuerySet类型的出现. QuerySet切片操作:QuerySet是支持切片操作的,不过不能放负数.查询集 ...
- mysql之存储引擎和文件配置
(查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...
- 关于oracle的锁表解决session marked for kill
oracle 使用的过程中,有时候会遇到锁表的情况,数据库增.删.改.查都是会锁表的,但是锁的类型会不同, 大多是行锁,部分会是表锁. 在oracle运行中,一直是有表在锁的,只不过很快一个操作结束, ...
- 2018.10.23 hdu2476String painter(区间dp)
传送门 一道挺妙的区间dp. 我们先用区间dp求出第一个串为空串时的最小代价. 然后再加入原本的字符更新答案就行了. 代码: #include<bits/stdc++.h> using n ...