- 浏览: 552402 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
转自:http://xdwangiflytek.iteye.com/blog/1358080
c、 JDBC分页,通过Statement的statement.setMaxRow(endIndex)和resultSet.absoulte(beginIndex)取得当前页范围内的记录。此种方式的性能依赖于厂商对JDBC规范的实现。这种方式的通用性是最好的,性能也不错,完全与数据库平台无关了。
---
不知道大家做项目做到最后有什么感觉没有,其实大家做来做去就是做一个列表加上分页和多条件的查询(http://xdwangiflytek.iteye.com/blog/1358261),只是不同的项目业务流程不一样而已,所以今天我想说说这里的分页。 1、 大家需要了解的是为什么我们需要分页? 因为当数据量太大时,会影响查询和传输的性能,并且我们从用户角度来考虑的话,如果让用户一次性看到成千上万条记录那用户也会疯掉的。 2、 对我们来说有哪些可实现的分页技术? a、 存储过程分页,即在数据库中创建一个存储过程,传入SQL和页码获取当前页的记录,这个需要大家对存储过程有比较好的认识(我这块不行),当然这个从性能上来说是最好的,但是不能跨数据库平台。 b、 使用数据库专有SQL语句进行分页(Oracle的rownum、MSSQL的top、MySql的limit等),性能也很好,但是还是不能跨数据库(其实真实项目中没那么多项目要求都跨数据库)。 c、 JDBC分页,通过Statement的statement.setMaxRow(endIndex)和resultSet.absoulte(beginIndex)取得当前页范围内的记录。此种方式的性能依赖于厂商对JDBC规范的实现。这种方式的通用性是最好的,性能也不错,完全与数据库平台无关了。 d、 根据数据库类型自动生成数据库专有特性的sql语句,其实说白了也就是Hibernate的实现方式,这个自己也写过一个,其实就是根据数据库类型生成不同的数据库SQL专有语句而已。 下面我们需要写一个分页工具类,在写之前我们需要弄明白分页的原理。为了能够取得指定页码所对应的记录,我们是不是需要两个关键的参数:总记录数和每页的记录数; 每页的记录数我们可以设置一个默认值,10、15、20、25都无所谓,根据实际需求。 总记录数就没办法了,需要额外从数据库中利用Count函数取了,通过这两个参数我们是不是可以计算出总页数。同时我们也可以判断用户传过来的页码是否有效(小于第一页OR超出最后一页),然后我们再根据页码和每页记录数是不是就可以计算出当前页的的开始条数和终止条数了。 下面我们就需要来看看分页的工具类了 继续 在后台获取前台传进来的页码 //从页面取得页码 数据访问层,StduentDao.java 其实仔细想想JDBC分页的性能与页码有关即与statement.setMaxRows有效,越往后翻,性能越差,因为越往后一次性查询的记录数就多,但是我们从用户的角度来看不会有用户会牛逼的一页一页翻到第n页去,一般都是根据条件来缩小查询范围。所以折中的办法就是将记录数设大一点,另外就是限制用户翻页的范围,其实这些性能的前提都是在数据量非常大的情况下而言的,一般数据量少的话,基本上都可以忽略不计的。
package com.iflytek.page;
/**
* 分页工具类
*
* @author xudongwang 2012-1-19
*
* Email:xdwangiflytek@gmail.com
*/
public class Page {
/**
* 总记录数
*/
private int totalRow;
/**
* 每页记录数
*/
private int pageSize = 10;
/**
* 当前页码
*/
private int currentCount;
/**
* 总页数
*/
private int total;
/**
* 起始记录下标
*/
private int beginIndex;
/**
* 截止记录下标
*/
private int endIndex;
/**
* 构造方法,使用总记录数,当前页码
*
* @param totalRow
* 总记录数
* @param currentCount
* 当前页面,从1开始
*/
public Page(int totalRow, int currentCount) {
this.totalRow = totalRow;
this.currentCount = currentCount;
calculate();
}
/**
* 构造方法 ,利用总记录数,当前页面
*
* @param totalRow
* 总记录数
* @param currentCount
* 当前页面
* @param pageSize
* 默认10条
*/
public Page(int totalRow, int currentCount, int pageSize) {
this.totalRow = totalRow;
this.currentCount = currentCount;
this.pageSize = pageSize;
calculate();
}
private void calculate() {
total = totalRow / pageSize + ((totalRow % pageSize) > 0 ? 1 : 0);
if (currentCount > total) {
currentCount = total;
} else if (currentCount < 1) {
currentCount = 1;
}
beginIndex = (currentCount - 1) * pageSize;
endIndex = beginIndex + pageSize;
if (endIndex > totalRow) {
endIndex = totalRow;
}
}
public int getTotalRow() {
return totalRow;
}
public int getPageSize() {
return pageSize;
}
public int getCurrentCount() {
return currentCount;
}
public int getTotal() {
return total;
}
public int getBeginIndex() {
return beginIndex;
}
public int getEndIndex() {
return endIndex;
}
}
int currentPage = 1;
try {
currentPage = Integer.parseInt(request.getParameter("currentPage"));
} catch (Exception ex) {}
//取得总记录数,创建Page对象
int totalRow = studentDao.getAllStudents();//通过select count 取得总记录数
Page page = new Page(totalRow, currentPage);
studentDao.list(page);
public List<Stduent> getStudentsByPage(Page page) {
List<Stduent> students = new ArrayList<Stduent>();
try {
String sql = "SELECT id,name,email FROM tbl_stduent";
Connection conn = null;
try {
conn = DbUtil.getConnection();
Statement statement = conn.createStatement();
statement.setMaxRows(page.getEndIndex());//关键代码,设置最大记录数为当前页记录的截止下标
ResultSet resultSet = statement.executeQuery(sql);
if (page.getBeginIndex() > 0) {
resultSet.absolute(page.getBeginIndex());//关键代码,直接移动游标为当前页起始记录处
}
while (resultSet.next()) {
Stduent student = new Student();
……
students.add(student);
}
resultSet.close();
statement.close();
} finally {
if (conn != null) {
conn.close();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return students;
}
发表评论
-
Mysql 的语法
2015-05-17 20:54 5131、启动 停止 bin/mysql.server star ... -
DbUtils的使用
2013-01-28 19:56 1223DbUtils的使用 今天在看一段源码的时候,看到了可以使用 ... -
NoSQL非关系型数据库
2013-01-22 15:39 908转:http://baike.baidu.com/view/2 ... -
mysql 导入导出函数、存储过程
2012-06-22 16:20 2908mysql常用导出数据命令: 1.mysql导出整个数 ... -
几种数据库的SQL判断表是否存在
2012-02-01 15:35 923Oracle: declarevar_exis ... -
Oracle中实现分页的方法 .
2011-12-12 09:27 1321转:http://blog.csdn.net/andkylee ... -
转:ASE中数据结果集分页功能的三种实现方法 .
2011-12-12 09:26 1089转:http://blog.csdn.net/andkylee ... -
Oracle的定时任务创建
2011-09-09 13:02 920drop sequence s_CarInfoID ... -
数据库下载地址 更新中....
2011-08-02 13:49 802ORACLE 下载(官网) http://www.oracl ... -
Java 调用 Oracle 存储过程返回结果集
2011-07-07 20:01 1415转自:http://wxy0327.itpub.net/ ... -
HugeTable 连接
2011-07-05 13:20 1023JAVA连接HugeTable的代码如下 ... -
Hsqldb安装与使用
2011-07-04 19:45 1055转自:http://fengyongfa2006.blog.1 ... -
SQL语句修改字段类型报错
2011-05-06 10:03 1957Sybase 12.5数据库执行 alter ta ... -
转SQL Server 存储过程的经典分页
2010-06-22 19:18 1286转自:http://www.iteye.com/topic/2 ... -
MySql数据库
2010-06-05 14:33 9211、安装 正在使用5.1版本 ,下载地址 ... ... -
Linux下启动Sybase ASE和IQ
2010-02-01 10:01 4648启动和关闭Sybase ASE sybase@*** ... -
Oracle Win自动备份数据BAT文件
2009-12-21 22:24 1424@echo off REM ################ ... -
Oracle常用及非常用函数
2009-09-22 16:47 778转自: http://wangyu.iteye.com/blo ... -
JDBC使用addBatch一次插入 万条数据
2009-09-22 16:26 2212public class Conn { pub ... -
Linux下启动Oralce
2009-09-22 14:45 875su - oracle sqlplus /nolog ...
相关推荐
java jdbc 分页工具类,以及返回集合数据的封装, private int limit = 10;//每页的个数 /** * 当前页 */ private int page; // /** * 总行数 */ private int totalRows; // /** * 总页数 */ private ...
原创强大的jdbc数据库操作工具类: 1.获取数据源 2.设置数据源 3.获取数据库连接 4.执行insert/delete语句,一个参数列表 public static boolean excute(String sql, List args) 5.执行insert/delete语句,多个参数...
我自己写的,jdbc工具类。驱动、连接地址、用户名等信息可以通过一个properties配置文件进行配置,非常方便。嘿嘿。
基于jdbc的封装,轻量级映射,自带连接池,无第三方依赖。支持多数据源,配置简单,支持注解sql查询,自带分页查询。
简单封装JDBC操作数据库,实现了增删改查和分页的操作,直接调用工具类方法即可,其中用到了Apache的beanUtils工具类。
SpringJdbcTemplate封装工具包,包括规范model格式接口,封装SpringJdbcTemplate,实现分页,自适应多种数据库
使用JDBC实现数据库工具类,使用工具类连接数据库,使用EasyUI连接后台实现数据表格的展示和分页功能
PageUtil:分页工具类, POIUtil:poi工具类,excel导出 QrCodeUtil:二维码操作工具, 包括生成和读取 ShellUtil:shell命令操作工具,包括linux登陆,命令执行...... 较为简单,具体需要自行扩充 SignUtil:...
NULL 博文链接:https://jeffenchung.iteye.com/blog/1472402
dateUtil fileUtil propertyUtil 反射 json 分页 jdbc struts2 string 一些java开发 常用的工具类的总结 封装
JdbcUtils是jdbc封装的工具, JdbcCRUDUtils借助JdbcUtils实现对实体的增删改查(分页).尤其是分页,最终结果可实现只需给方法传两个参数即可取得分页数据.那两个参数分别是[显示页数]\[每页显示数] ----------...
比较适合初学者参考,jdbc工具类是自己写的,没有使用第三方分页组件。tomcat是apache-tomcat-7.0.41,myeclipse是MyEclipse 9.0,oracle是11g。例子中用的是海量数据账户sh下的sales表,如果想运行的话,需要对sh...
socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...
1.4 JDBC 3.0中的类和接口 1.4.1 java.sql包中的类和接口及其使用 1.4.2 javax.sql包中所含内容及其使用 1.5 JDBC驱动程序简介 1.5.1 JDBC-ODBC 桥和ODBC驱动程序 1.5.2 本地API部分Java驱动程序 1.5.3 JDBC...
socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...
socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...
此小工具能更据mysql数据库中的表结构,自动生成JDBC DAO类和接口,包括单表操作的CRUD方法,其中包含分页方法。此工具用swing做的界面,使用简单方便。需要源码,请发邮件至763863446@qq.com。
socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...
socket工具类,权限组件,菜单组件,jdbc分页支持多种数据库,ant路径工具类,增加jquery easyUI 1.0.9 版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 ...
自己收集的JAVA工具类,有“配置文件读取”,“验证码生成”,“分页器”,“JSP导出excel”,“MD5加密”,“JDBC工具”,“数据源”,“listener”等