hibernate单表查询总结(下)

    xiaoxiao2021-03-25  88

    hibernate单表查询总结(下) 本博客接着hibernate单表查询总结(上)继续就Hibernate的单表查询进行总结

    一、分页查询

    public void testQuerySingleTable_HQL_PagingPuery() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); String hql = "from Student"; int pageNo = 2;//当前页码 int pageSize = 3;//每页记录数 int firstResult =(pageNo - 1) * pageSize;//起始处 List<Student> list = session.createQuery(hql) .setFirstResult(firstResult) .setMaxResults(pageSize) .list(); for (Student stu : list) { System.out.println(stu); } session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } }

    二、模糊查询

    public void testQuerySingleTable_HQL_Vague() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); String hql = "from Student where name like:name"; List<Student> list = session.createQuery(hql) .setString("name", "%张%") .list(); for (Student stu : list) { System.out.println(stu); } session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } }

    三、聚合函数查询

    public void testQuerySingleTable_HQL_AggregateFunction() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); String hql = "select count(id) from Student"; Long count = (Long) session.createQuery(hql).uniqueResult(); System.out.println("一共有:"+count+"条数据"); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } }

    四、映射查询

    (只取某几个字段)

    public void testQuerySingleTable_HQL_Mapping() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); String hql = "select new Student(name,age) from Student"; // 执行操作 List<Student> list = session.createQuery(hql) .list(); for (Student stu : list) { System.out.println(stu); } session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } }

    五、分组查询

    public void testQuerySingleTable_HQL_Group() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); //查询有几个年龄段 String hql = "select age from Student gruoup by age"; // 执行操作 List<Integer> list = session.createQuery(hql).list(); // 执行操作 for (Integer age : list) { System.out.println(age); } session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } }

    六、命名查询

    命名查询是将HQL语句配置到xml文件中,从而提高代码的可维护性,HQL语句可以配置到当前应用的任一xxx.hbm.xml文件中 具体位置是在class标签后面

    public void testQuerySingleTable_HQL_NamedQuery() { Session session = HbnUtils.getSession(); try { session.beginTransaction(); //getNamedQuery("selectById")参数为配置文件里写的名字 Student stu = (Student) session.getNamedQuery("selectById").setInteger("id", 3).uniqueResult(); System.out.println(stu); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } }

    七、关于单表查询的效率问题

    在Query接口的List方法和Iterate方法总结一文中有详细讲述 今天分享的内容就是这些,如有疑问加群:511906138 大家一起讨论!

    转载请注明原文地址: https://ju.6miu.com/read-21982.html

    最新回复(0)