zoukankan      html  css  js  c++  java
  • SSH初体验系列--Hibernate--3--单值与分页查询

    前言

      查询可以按结果集分2类:单个结果 和 数组 ; 其中,返回数组,在这个 数据库数据量随随便便就能上几十万的互联网时代大背景下,常常需要做分页处理, 所以这里就说一下单值和分页, 算是对上一篇"curd"的一些延伸

    一.单值查询

        比如,我们需要查询数据库,统计一下app的当前注册人数, 此时我们知道返回结果必定是"单行单列"的一个数值,那么可以用这种单值查询方式;

        使用uniqueResult()方法,它返回一个java.lang.Object对象,并且能保证返回的一定是一个单值对象,否则就会报错;如果返回0个对象,也会报错;所以我们需要放到try-catch块中

            Session session=null;
            try{
                session= HibernateUtil.openSession();
                String hql="select count(*) from Feedback";
               long count= (long) session.createQuery(hql).uniqueResult();
                System.out.println("get data ok");
            }catch(Exception e){
                e.printStackTrace();
                throw new RuntimeException(e);
            }finally {
                session.close();
            }

    二.分页查询

        在这个互联网时代,动辄几十万的数据也是非常平常的事情了,每次查询全部加载是很不现实的。因此,做分页查询,不仅节省db性能,带宽,流畅度上来了还能提升用户体验.

        hibernate的Query类下有两个方法可以帮我们达到分页查询目的:setFirstResult(int num)和setMaxResults(int size);  前者的num是查询的起始记录数,比如从第3条开始查询,就是setFirstResult(3); 后者的size是查询结果集的大小,比如获取10条记录,那就是setMaxResults(10);

                //分页查询
                String hql="from Feedback order by id desc";
                List<Feedback> feedbacks=session.createQuery(hql).setFirstResult(1).setMaxResults(2).list();

        其中: setFirstResult(int num)的num仍旧是由0开始的;

        于是,配合着pageIndex,pageCount,很容易就可以得到分页请求代码,在上面代码的基础上修改一下就行:

                //分页查询
                String hql="from Feedback order by id desc";
                
                int pageIndex=2,pageCount=10;
                
                List<Feedback> feedbacks=session.createQuery(hql).setFirstResult((pageIndex-1)*pageCount).setMaxResults(pageCount).list();

     

      

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利;

    本文出自:博客园--别问是谁

  • 相关阅读:
    一个小案例精通lamda表达式
    你想被开除吗?来看看程序员【离职小技巧】吧
    让 Flutter 在鸿蒙系统上跑起来
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    环形单链表的增删改查、约瑟夫环两种解法
    一万字详解 Redis Cluster Gossip 协议
    Lambda表达式
    Linux系统中如何进入退出vim编辑器,方法及区别
    成为博客主的第一天
    【秋招内推】近期互联网公司秋招内推合集
  • 原文地址:https://www.cnblogs.com/Andrew-XinFei/p/6101960.html
Copyright © 2011-2022 走看看