hibernate单表查询总结(下)
  TEZNKK3IfmPf 2023年11月15日 36 0

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文件中
hibernate单表查询总结(下)
具体位置是在class标签后面
hibernate单表查询总结(下)

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方法总结一文中有详细讲述


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: mysq慢查询sql分析 下一篇: v-for 遍历对象
  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
TEZNKK3IfmPf