java开发之Jdbc分页源码详解
总之是用jdbc的游标移动
packagecom.sp.person.sql.util;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.Map;
importjava.util.TreeMap;
importjavax.sql.DataSource;
/**
*常常有同事在问JDBC分页查询这里给二个例子介绍一下
*JDBC分页查询
*分成二种方式希望对大家有所帮助
*分另表示了absolute与relative的区别
*@see这时用到一个数据源设计模式
*数据源与数据库连接没有关系
*例用接口回调的特性
*@authorliuqing
*@version1.0
*
*/
publicclassJdbcUtil{
/**
*数据源
*/
privateDataSourcedataSource;
/**
*不否启用多数据源
*/
privatebooleanisMultipleDataSource;
/**
*有时一个系统可能要使用多个数据源,存放多个数据源
*/
privateMapdataSources=newTreeMap();
/**
*iftrueisMultipleDataSourceisKeytoDataSource
*/
privateStringdataSourceKey;
/**
*默认构造器
*/
publicJdbcUtil(){
}
/**
*构造器Spring的构造器注入
*@paramdataSource
*/
publicJdbcUtil(DataSourcedataSource){
this.dataSource=dataSource;
}
/**
*JDBC分页查询
*@paramsqlSQL查询语句
*@paramfirstSize起始页
*@parammaxSize返回数据条数
*@returnResultSet
*@throwsSQLException
*/
publicResultSetqueryPageAbsolute(Stringsql,
intfirstSize,intmaxSize)throwsSQLException{
PreparedStatementpre=this.getConn().prepareStatement(sql);
pre.setMaxRows(maxSize);
ResultSetrs=pre.executeQuery();
rs.absolute(firstSize*maxSize);
returnrs;
}
/**
*JDBC分页查询
*@paramsqlSQL查询语句
*@paramfirstSize起始页
*@parammaxSize返回数据条数
*@returnResultSet返回结果集
*@throwsSQLException
*/
publicResultSetqueryPageRelative(Stringsql,
intfirstSize,intmaxSize)throwsSQLException{
PreparedStatementpre=getConn().prepareStatement(sql);
pre.setMaxRows(maxSize);
ResultSetrs=pre.executeQuery();
rs.relative(firstSize);
returnrs;
}
/**
*
*@returnConnection
*@throwsSQLException
*/
privateConnectiongetConn()throwsSQLException{
//使用多数据源的情况
if(this.isMultipleDataSource){
DataSourcev_dataSource=this.queryDataSourceByKey();
if(v_dataSource!=null){
returnv_dataSource.getConnection();
}
}
returnthis.dataSource.getConnection();
}
/**
*获得多数据源方法
*@returnDataSource
*/
publicDataSourcequeryDataSourceByKey(){
for(Map.Entryds:this.dataSources.entrySet()){
if(ds.getKey().equals(dataSourceKey)){
returnds.getValue();
}
}
returnnull;
}
/**
*获得多数据源方法
*@returnDataSource
*/
publicDataSourcequeryDataSourceByKey(StringuseKey){
for(Map.Entryds:this.dataSources.entrySet()){
if(ds.getKey().equals(useKey)){
returnds.getValue();
}
}
returnnull;
}
/**
*数据源
*/
publicDataSourcegetDataSource(){
returndataSource;
}
/**
*数据源setter注入
*/
publicvoidsetDataSource(DataSourcedataSource){
this.dataSource=dataSource;
}
/**
*@returntheisMultipleDataSource
*/
publicbooleanisMultipleDataSource(){
returnisMultipleDataSource;
}
/**
*@paramisMultipleDataSourcetheisMultipleDataSourcetoset
*/
publicvoidsetMultipleDataSource(booleanisMultipleDataSource){
this.isMultipleDataSource=isMultipleDataSource;
}
/**
*@returnthedataSources
*/
publicMapgetDataSources(){
returndataSources;
}
/**
*@paramdataSourcesthedataSourcestoset
*/
publicvoidsetDataSources(MapdataSources){
this.dataSources=dataSources;
}
/**
*返回当前使用的数据源
*@returnthedataSourceKey
*/
publicStringgetDataSourceKey(){
returndataSourceKey;
}
/**
*要使用的数据源为
*@paramdataSourceKeythedataSourceKeytoset
*/
publicvoidsetDataSourceKey(StringdataSourceKey){
this.dataSourceKey=dataSourceKey;
}
}
更多关于java开发之Jdb分页源码实例请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。