mysql使用limit来达到相同的效果。limit可以有两个参数,也可以有一个参数。当只有一个参数的时候,就等同于 top。比如:
select * from t_user limit 10;当有两个参数的时候(limit num1, num2),就是从指定的纪录(num1)开始,取得(num2)个纪录。比如:
select * from t_user limit 5, 10;就是从第六个纪录开始,连续取得10条纪录的意思。要注意,mysql是从0开始计数的。

解决方案 »

  1.   

    而在hibernate中,已经包装了对不同数据库的实现的包装。hibernate本身提供了api,这些api包装了不同数据库的差异。也就是说,调用相同的hibernate api,hibernate会根据你配置的dialect的不同,产生不同的sql来执行,而这一切都不需要你的参与,是hibernate自动完成的。hibernate是通过Query对象的 setFirstResult()方法和 setMaxResults()方法来实现的。hibernate的实现方式和mysql的有点类似,都是通过指定要获取的第一条纪录的位置和最大的返回纪录数来实现这个效果。Query query = session.createQuery(hqlString);
    query.setFirstResult(startPos);
    query.setMaxResults(amount);
    query.list();比如,你要前10条纪录,那么就是:
    Query query = session.createQuery(hqlString);
    query.setFirstResult(0);
    query.setMaxResults(10);
    query.list();这样,hibernate会把这个query编译成为和你的数据库相匹配的sql,来获取前10条纪录。
      

  2.   

    至于排序规则,你就写在 hql 查询语句里面好了。
    你可以参看hibernate的官方文档。里面有很详尽的例子
      

  3.   

    顺便提一个小问题,CSDN我用FIREFOX浏览,为什么老提示错误的URL来源呀!!
    害得我还要切换到IE模式下!!各位遇到过这个情况了吗!!
      

  4.   

    可是我的程序写到Query   query   =   session.createQuery(hqlString); 
    query.setFirstResult(0); 
    query.setMaxResults(10); 
    query.list();
    query.setFirstResult(0); ,query.setMaxResults(10);这两句话同时存在就会出错,为什么啊,摆脱帮忙看看,很急啊