您的位置:首页 > 数据库 > Oracle

使用rownum对oracle分页

2015-09-30 10:50 721 查看

以Student表为例进行分页

纯sql分页

SELECT * FROM (
SELECT ROWNUM RN,A.* FROM (
SELECT *
FROM STUDENT ORDER BY SNAME ASC
)A WHERE ROWNUM <= 20 )
WHERE RN >=11;


mybatis分页

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="student">
<typeAlias alias="Student" type="com.bobo.code.model.Student" />
<select id="select" resultClass="Student">
SELECT * FROM
(
SELECT  A.*,ROWNUM RN	FROM
(SELECT * FROM	STUDENT) A
WHERE  <![CDATA[ ROWNUM <=  #maxRowNum#]]>
)
WHERE  <![CDATA[RN >=   #minRowNum#]]>
</select>

<select id="count" resultClass="java.lang.Integer">
SELECT count(*) FROM STUDENT
</select>

</sqlMap>


  

queryMap.put("minRowNum", (pageNumber - 1)*Pager.DEFAULT_PAGE_SIZE +1);//oracle rownum起
queryMap.put("maxRowNum", pageNumber * Pager.DEFAULT_PAGE_SIZE );//oracle rownum止


 

开发过程异常

无法转换为内部表示

当Student的属性id 为Integer,和数据库中的字段ID为VARCHAR2 导致不对应会取不出数据,报错(无法转换为内部表示):



如果sql语句错误,比如多了一个逗号之类的,会报错(ORA-00936):

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: