oracle:
<select id="queryPageBySearch" resultMap="FullResultMap"
parameterClass="java.util.HashMap">//调用方法时使用的id,返回的结果类型,传入的参数类型
<![CDATA[select * from (select newtab_.*,rownum idx_ from (]]>
SELECT * FROM USERS
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="id">
ID = #id#
</isNotEmpty>
</dynamic>
<![CDATA[) newtab_ where rownum <= #lastRows# ) where idx_ >#offset#]]>
ORDER BY id ASC
</select>
mysql:
<select id="queryPageBySearch" resultMap="FullResultMap"
parameterClass="java.util.HashMap">
SELECT * FROM users
ORDER BY id ASC
limit #offset#,#pagesize#
</select>
在一开始转mysql不小心将limit后面的offset和lastRows两个值弄反了,写成了limit #lastRows#,#offset#结果lastRows值大于数据库表里的记录条数(我的记录有5条,而lastRows值为8),导致返回的结果为空,然后改成limit #lastRows#,#pagesize#,结果还是一样,因为表示取的数据是从第8条到第pagesize条,所以不可能取到数据,最后断点测试才发现这个错误原因,于是把两个值的顺序反下即可,limit #offset#,#pagesize#。