首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

mysql、sqlserver、oracle分页,java分页一致接口实现

2012-07-16 
mysql、sqlserver、oracle分页,java分页统一接口实现定义:pageStart 起始页,pageEnd 终止页,pageSize页面容

mysql、sqlserver、oracle分页,java分页统一接口实现

定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量

oracle分页:

    select * from ( select mytable.*,rownum?num from (实际传的SQL) where?rownum<=pageEnd) where num>=pageStart

sqlServer分页:

???????????select * from ( select?top?页面容量 from( select?top? 页面容量*当前页码 * from 表 where 条件 order by 字段A) as temptable1 order by

字段A desc) as temptable2 order by 字段A  

Mysql分页:

?????????select * from mytable where 条件?limit?当前页码*页面容量-1?to?页面容量

Java分页接口和实现类:

?

package com.qg.demo.util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;

public class OracleUtil {
?private String dataSourceName;
?private DataSource ds;
?public OracleUtil(String dataSourceName){
??this.dataSourceName = dataSourceName;
?}
?public OracleUtil(){
??
?}
?public void setDataSourceName(String dataSourceName){
??this.dataSourceName = dataSourceName;
?}
?public void init(){
??Context initContext;
??try {
???initContext = new InitialContext();
???ds = (DataSource)initContext.lookup(dataSourceName);
??} catch (NamingException e) {
???e.printStackTrace();
??}
?}
?public int update(String sql,String[] param){
??int result = 0;
??QueryRunner qr = new QueryRunner(ds);
??try {
???result = qr.update(sql,param);
??} catch (SQLException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??return result;
?}
?public Object query(String sql,String[] param,ResultSetHandler rsh){
??QueryRunner qr = new QueryRunner(ds);
??Object result = null;
??try {
???result = qr.query(sql, param,rsh);
??} catch (SQLException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??return result;
?}
?public static Connection getConnection(){
??Connection conn = null;
??try {
???Context context = new InitialContext();
???DataSource ds = (DataSource)context.lookup("java:/comp/env/jdbc/oracleds");
???conn = ds.getConnection();
???QueryRunner qr = new QueryRunner(ds);
//???PreparedStatement pstmt = conn.prepareStatement("select * from guestbook");
//???ResultSet rs = pstmt.executeQuery();
//???while(rs.next()){
//?????? System.out.println(rs.getInt("g_id"));??
//????System.out.println(rs.getString("title"));
//????System.out.println(rs.getString("remark"));
//???}
???
??} catch (NamingException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}catch(SQLException e){
???e.printStackTrace();
??}
??return conn;
?}

}

?

?

package com.qg.demo.util;

import java.util.List;

public interface Pagination {
?public boolean isLast();
?public boolean isFirst();
?public boolean hasNext();
?public boolean hasPrevious();
?public int getMaxElements();//最大记录数
?public int getMaxPage();//最大页码
?public int getNext();
?public int getPrevious();
?public int getPageSize();
?public int getPageNumber();
?public List<Object> getList();
?public void setPageSize(int pageSize);
?public void setPageNumber(int pageNumber);
}

?

?

package com.qg.demo.util;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.regex.Pattern;

import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;

public class OraclePaginationImpl implements Pagination {
?private int pageSize = 20;
?private int pageNumber = 1;
?private int maxElements;
?private int maxPage;
?private String sql;
?private OracleUtil db;
?public? OraclePaginationImpl(String sql){
??this.sql = sql;
??init();
?}
?public OraclePaginationImpl(String sql,int pageSize, int pageNumber){
??this.sql = sql;
??this.pageSize = pageSize;
??this.pageNumber = pageNumber;
??init();
??setPageNumber(pageNumber);
?}
?private void init(){
??db = new OracleUtil("java:/comp/env/jdbc/oracleds");
??db.init();
??setMaxElements();
??setmaxPage();
?}
?private void setMaxElements() {
??//select * from xxx order by xx desc
??//select count(1) from xxx order by xx desc
??String regex = "select((.)+)from";
??Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
??String[] s = p.split(this.sql);
??String newSql = "select count(1) as total from "+s[1];
??ResultSetHandler handler = new ResultSetHandler(){
???public Object handle(ResultSet rs) throws SQLException{
????if(rs.next()){
?????return new Integer(rs.getInt("total"));
????}else{
?????return null;
????}
???}
??};
??this.maxElements = (Integer)db.query(newSql, null, handler);
??
?}
?private void setmaxPage(){
??this.maxPage = (maxElements%pageSize == 0 ? maxElements/pageSize : (maxElements/pageSize +1));
??
?}
?private String sqlModify(String sql,int begin ,int end){
??StringBuffer buffer = new StringBuffer();
??buffer.append("select * from ( select rownum num,a.* from (")
??????? .append(sql)
??????? .append(") a where rownum <= ")
??????? .append(end)
??????? .append(") where num >= ")
??????? .append(begin);
??return buffer.toString();
?}
?private int getBeginElement() {
??return (pageNumber-1) * pageSize +1;
?}
?private int getEndElement() {
??return (pageNumber*pageSize >=maxElements ? maxElements : pageNumber*pageNumber);
?}
?public List<Object> getList() {
??String newSql = this.sqlModify(sql, getBeginElement(), getEndElement());
??return (List)db.query(sql, null, new MapListHandler());
?}

?public int getMaxElements() {
??return maxElements;
?}

?public int getMaxPage() {
??return maxPage;
?}

?public int getNext() {
?? return pageNumber+1 >= maxPage ? maxPage : pageNumber+1;
?}

?public int getPageNumber() {
??return pageNumber;
?}

?public int getPageSize() {
??return pageSize;
?}

?public int getPrevious() {
??return pageNumber-1 <=1 ? 1 :pageNumber -1;
?}

?public boolean hasNext() {
??return pageNumber < maxPage;?
?}

?public boolean hasPrevious() {
??return pageNumber > 1;
?}

?public boolean isFirst() {
??return pageNumber == 1;
?}

?public boolean isLast() {
??return pageNumber == maxPage;
?}

?public void setPageNumber(int pageNumber) {
??if(pageNumber>maxPage){
???this.pageNumber = maxPage;
??}else if(pageNumber<1){
???this.pageNumber = 1;
??}else{
???this.pageNumber = pageNumber;
??}
?}

?public void setPageSize(int pageSize) {
??this.pageSize = pageSize;

?}
}

热点排行