oracle与mysql的分页

207人阅读 评论(0) 收藏 举报
分类:

mysql和oracle相似

oracle分页语句

sql语句

select * from (select t.*,rownum rn from food t where t.foodname like '%"+name+"%') where rn>=开始位置 and

rn<=结束位置;

例如每页显示5条记录

第一页

开始位置   (页数-1)x每页显示的条数+1   (1-1)x5+1

结束位置     页数x每页显示的条数       1x5


mysql分页语句(第一条从0索引开始

sql语句

select * from food t where t.foodName like '%"+name+"%' limit开始位置,每页显示的条数

例如每页显示5条记录

第一页

开始位置 (页数-1)x每页显示的条数 (1-1)x5


包装工具类不用改 通用的

获取oracle包装工具了中的开始索引减1就可以了



1、Oracle分页的工具类

package cn.et.model;


import java.util.List;


public class PageTools_1 {
	/**
	* 
	* 
	* @param curPage   页面传入的当前页
	* @param totalCount   数据库查询的总记录数
	* @param pageCount     每页显示的条数
	*/
	public PageTools_1(Integer curPage,Integer totalCount,Integer pageCount){
		this.curPage=curPage;
		this.totalCount=totalCount;
		this.pageCount=pageCount==null?this.pageCount:pageCount;
		//上一页
		this.prePage=(curPage==1?1:curPage-1);
		//总页数
		this.totalPage=totalCount%this.pageCount==0?totalCount/this.pageCount:(totalCount/this.pageCount+1);
		//下一页     ==不行的话  可以使用equals
		this.nextPage=(curPage==totalPage)?totalPage:(curPage+1);
		//数据库第几页每页显示的数据   开始索引和结束索引
		this.startIndex=(curPage-1)*this.pageCount+1;
		this.endIndex=curPage*this.pageCount;
	}



	/**
	* 当前页(动态  由页面传递)
	*/
	private Integer curPage;
	/**
	* 上一页
	* prePage=(curPage==1?1:curPage-1)
	* 
	*/
	private Integer prePage;
	/**
	* 下一页
	* nextPage=(nextPage==totalPage)?totalPage:(curPage+1)
	* 
	* 
	*/
	private Integer nextPage;
	//每页显示的条数 默认显示10条
	private Integer pageCount=10;
	/**
	* 总页数
	* totalPage=(totalCount%pageCount==0?totalCount/pageCount:(totalCount/pageCount+1)
	* 
	*/
	private Integer totalPage;
	//数据库的总记录数(数据库查询)
	private Integer totalCount;
	//每页的数据放入该集合中
	private List date;

	/**
	* 数据库开始索引和结束索引
	* 
	* startIndex=(curPage-1)*PageCount+1
	* endIndex=curPage*pageCount
	* 
	*/
	private int startIndex;
	private int endIndex;

	public int getStartIndex() {
		return startIndex;
	}
	public void setStartIndex(int startIndex) {
		this.startIndex = startIndex;
	}
	public int getEndIndex() {
		return endIndex;
	}
	public void setEndIndex(int endIndex) {
		this.endIndex = endIndex;
	}
	public List getDate() {
		return date;
	}
	public void setDate(List date) {
		this.date = date;
	}
	public Integer getCurPage() {
		return curPage;
	}
	public void setCurPage(Integer curPage) {
		this.curPage = curPage;
	}
	public Integer getPrePage() {
		return prePage;
	}
	public void setPrePage(Integer prePage) {
		this.prePage = prePage;
	}
	public Integer getNextPage() {
		return nextPage;
	}
	public void setNextPage(Integer nextPage) {
		this.nextPage = nextPage;
	}
	public Integer getPageCount() {
		return pageCount;
	}
	public void setPageCount(Integer pageCount) {
		this.pageCount = pageCount;
	}
	public Integer getTotalPage() {
		return totalPage;
	}
	public void setTotalPage(Integer totalPage) {
		this.totalPage = totalPage;
	}
	public Integer getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(Integer totalCount) {
		this.totalCount = totalCount;
	}

	public static void main(String[] args) {
		int curPage=6;
		int totalCount=27;
		int pageCount=5;

		PageTools_1 pt=new PageTools_1(curPage, totalCount, pageCount);
		System.out.println(pt.getNextPage());
		System.out.println(pt.getPrePage());
		System.out.println(pt.getTotalPage());
		System.out.println(pt.getStartIndex());
		System.out.println(pt.getEndIndex());
	}
}





2、此类连接数据库并插叙总记录数

package cn.et.model;


import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;


public class OracleDbUtils_1 {
	static Properties p=new Properties();
	static{
		//在bin目录去读jdbcmysql.properties文件
		InputStream is=OracleDbUtils_1.class.getResourceAsStream("/jdbcoracle.properties");
		try {
			p.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static Connection getConnection() throws Exception{
		String url=p.getProperty("url"); //获取连接服务器的ip地址 端口 和数据库
		String driverClass=p.getProperty("driverClass");//告诉jdbc使用的是什么数据库
		String uname=p.getProperty("username");//使用哪个账号登录
		String paw=p.getProperty("password");//登录密码
		Class.forName(driverClass);//加载该类
		Connection conn=DriverManager.getConnection(url,uname,paw);//登录
		return conn;
	}

	//例如sql语句:select count(rowid) as cr from food
	public static List<Map> query(String sql) throws Exception{
		Connection conn=getConnection();
		PreparedStatement pst= conn.prepareStatement(sql);
		ResultSet rs=pst.executeQuery();
		// 获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象
		ResultSetMetaData rsmd=rs.getMetaData();
		  //获取列的总数
		int columnCount=rsmd.getColumnCount();
		List list=new ArrayList();
		while(rs.next()){
			Map map=new HashMap();
			for(int i=1;i<=columnCount;i++){
				//获取列名
				String colName=rsmd.getColumnName(i);
				//获取对应的值
				String colValue=rs.getString(i);
				//以键值对的方式存入map集合中
				map.put(colName, colValue);
			}
			list.add(map);
		}
		rs.close();
		pst.close();
		conn.close();
		return list;
	}
}




3、调用上面的方法  query()  返回总记录数
public Integer getFoodListCount(String name){
        if(name==null){
            name="";
        }
        int i=0;
        //该sql语句按条件查询的总记录数
        String sql="select count(rowid) as cr from food where foodname like '%"+name+"%'";
        try {
            //调用OracleDbUtils_1类中的query()方法  查询sql语句
            List<Map> result=OracleDbUtils_1.query(sql);
            //result.get(0):返回此列表中指定位置上的元素。   返回的是一个map集合      get("CR"): 返回指定键所映射的值
          i= Integer.parseInt(result.get(0).get("CR").toString());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return i;
    }
 


 

4.调用上面的getFoodListCount()方法  接收总记录数 并调用PageTools_1

public PageTools_1 getFoodAll(String name,Integer curPage) throws Exception{
        if(name==null){
            name="";
        }
        //按条件查询返回记录的总数
        Integer totalCount=getFoodListCount(name);
        //创建PageTools_1对象  传入当前页   总记录数   每页显示的数量
        PageTools_1 pt=new PageTools_1(curPage, totalCount, 6);
        //sql语句查询每页显示的具体数据
        List<Map> result=OracleDbUtils_1.query("select * from 
			(select t.*,rownum rn from food t where t.foodname like '%"+name+"%') 
				where rn>="+pt.getStartIndex()+" and rn<="+pt.getEndIndex());
        pt.setDate(result);
        return pt;
    }

如果是MySQL数据库 查询分页的sql语句

pt.getStartIndex()-1:开始下标(mysql从0开始)    pt.getPageCount():每页显示的条数
"select * from food where foodname like '%"+name+"%' limit" pt.getStartIndex()-1,pt.getPageCount();




查看评论

MySQL和Oracle分页的区别

MySQL和Oracle分页的区别 MySQL 分页 (利用LIMIT关键字) 计算参数为 开始序号(startNum),要查的总条数 (totalNum) Oracle 分页 (利用自带的rown...
  • jianshen0925
  • jianshen0925
  • 2016-12-05 09:23:26
  • 5417

浅谈Oracle与Mysql分页查询比较!!!!

浅谈Oracle与Mysql分页查询比较!!!!
  • u014185140
  • u014185140
  • 2016-07-25 20:43:16
  • 5723

Oracle分页以及与MySql的比较

oracle的分页和MySql的分页方法 以及rownum的用法理解,包括分页排序需要注意的小细节...
  • Matthew_snow
  • Matthew_snow
  • 2016-08-11 01:45:41
  • 1078

笔记:oracle、SqlServer和MySQL分页区别

1、MySQL用limit分页 /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex:其实的索引 * pageSize:每页显示的记录数 */ sel...
  • longmapang
  • longmapang
  • 2016-12-16 18:00:28
  • 1346

MySQL与Oracle的分页查询语句

一、MySQL MYSQL中有特定的分页查询语句,该sql语句只能在MySQL中使用 select * from t_customer limit ?,? 该sql语句的意思是,从第几行开始...
  • u010004317
  • u010004317
  • 2015-05-13 12:34:25
  • 7040

mysql和oracle分页实现方式

1,mysql实现分页的方式   limit start,count 如果数据量比较小,10w以下,直接简单的使用上面这张方式就行了。 如果数据量比较大,特别是100w以上的数据量,用上面那种方...
  • zfh320325
  • zfh320325
  • 2016-04-21 11:01:00
  • 739

MySQL与Oracle的分页

MySQL 数据库 分页查询,用到limit select * from table WHERE … LIMIT 10,20; #返回第10-20行数据 Oracle 的分页查询 用到rownu...
  • qq_35447305
  • qq_35447305
  • 2016-09-19 22:51:31
  • 486

Oracle和Mysql的分页查询语句

我们在进行分页查询业务时,不同数据库的sql语句可能不同,我在这里总结了Oracle和Mysql的sql语句。其本质都用到了子查询,这所以用到子查询,可能是行号作为新添加的字段,需要我们起别名来调用。...
  • github_37412255
  • github_37412255
  • 2017-07-17 15:59:56
  • 329

oracle实现分页与mysql实现分页功能

1.oracle所用的sql语句 String sql = "select * from ( select t.*, ROWNUM RN from ( select * from tblmetad...
  • liuyunshengsir
  • liuyunshengsir
  • 2016-02-16 08:33:56
  • 930

Oracle MySql以及Hibernate实现分页

大学时学习目标性不强,刚接触J2EE时,发现有太多的知识不熟悉,太多的知识需要去学习。但是在自己写Demo的时候,感觉到很多知识其实在用到的时候去网上找找就能解决,于是一个不太好的想法蒙蔽了我的双眼:...
  • zhangzhuang1127
  • zhangzhuang1127
  • 2013-09-13 22:54:40
  • 1814
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1617
    排名: 3万+
    文章存档