MyBatis 实现 Oracle 分页
< 是 <
<= 是 <= <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.CarMapper"> <select id="selectByPage" resultType="car"> select * from ( select t1.*, rownum rownu from CAR t1 where rownum <= #{ param1 } * #{ param2 } ) t2 where t2.rownu > ( #{ param1 } - 1 ) * #{ param2 } </select> </mapper> --------------------------------- 代码生成 sql 就这样: // 将 sql 合成 分页的 oracle sql StringBuffer pageSql = new StringBuffer(); pageSql.append( "select * from ( select rowTemp.*, rownum rownumTemp from ( " ); pageSql.append( sql ); pageSql.append( " ) rowTemp ) where rownumTemp > " + startRow + " and rownumTemp <= " + ( startRow + pageSize ) ); --------------------------------------
如果是用 hibernate 或 jpa 操作 oracle 数据库,就不用自己去拼写这些分页的 sql,
直接用 setFirstResult( int offset ) 和 setMaxResults( int limit ) 这两句就能自动获取分页的数据
