hibernate如何处理不同数据库带来的分页操作呢?MySQL中使用Limit,而Oracle中使用 rowNum,求大神详解
1个回答
展开全部
你只要符合他的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是如何实现分页的,那么可以看一下他的文档,或者参考下面的文章:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询