hibernate如何处理不同数据库带来的分页操作呢?MySQL中使用Limit,而Oracle中使用 rowNum,求大神详解

 我来答
半个_救世主_
2016-08-09 · TA获得超过213个赞
知道小有建树答主
回答量:298
采纳率:100%
帮助的人:131万
展开全部

你只要符合他的hql语句规范, 他会根据你配置方言自动翻译成需要的sql语句, 所以你不用管, 这些已经在他底层实现了, MysqlDialect, OracleDialect, 你可以去看一下这个源码,比如Oracle中:

final StringBuilder pagingSelect = new StringBuilder( sql.length()+100 );
if (hasOffset) {
pagingSelect.append( "select * from ( select row_.*, rownum rownum_ from ( " );
}
else {
pagingSelect.append( "select * from ( " );
}
pagingSelect.append( sql );
if (hasOffset) {
pagingSelect.append( " ) row_ ) where rownum_ <= ? and rownum_ > ?" );
}
else {
pagingSelect.append( " ) where rownum <= ?" );
}

if ( isForUpdate ) {
pagingSelect.append( " for update" );
}

return pagingSelect.toString();
}

你如果问的是hibernate是如何实现分页的,那么可以看一下他的文档,或者参考下面的文章:

http://my.oschina.net/kkdo/blog/724623

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式