hibernate框架学习之数据查询(HQL)helloworld

package cn.itcast.h3.hql;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import cn.itcast.h3.hql.vo.StudentModel;
import cn.itcast.h3.hql.vo.TeacherModel;
import cn.itcast.h3.util.HibernateUtil;

public class HQLApp {
    //测试简单查询
    void testSimple(){
        Session s = HibernateUtil.getSession();

        //1.HQL
        String hql = "from TeacherModel";
        //2.Query
        Query q = s.createQuery(hql);
        //3.获取查询结果
        List<TeacherModel> queryList = q.list();
        for(TeacherModel tm:queryList){
            System.out.println(tm);
        }

        s.close();
    }
    //链式格式
    void testLinked(){
        Session s = HibernateUtil.getSession();

        //3.获取查询结果
        List<TeacherModel> queryList = s.createQuery( "from TeacherModel where uuid <=:uuid").setFirstResult(1).setMaxResults(3).setLong("uuid", 3L).list();

        for(TeacherModel tm:queryList){
            System.out.println(tm);
        }

        s.close();
    }
    //别名格式
    void testAlias(){
        Session s = HibernateUtil.getSession();

        //1.HQL
        String hql = "select um.nick from TeacherModel um";
        //2.Query
        Query q = s.createQuery(hql);
        //3.获取查询结果
        List<String> queryList = q.list();
        for(String tm:queryList){
            System.out.println(tm);
        }

        s.close();
    }
    //聚合函数
    void testFunctoin(){
        Session s = HibernateUtil.getSession();
        //1.HQL
        String hql = "select sum(age) from StudentModel";
        //2.Query
        Query q = s.createQuery(hql);
        Long avgAge = (Long) q.uniqueResult();
        System.out.println(avgAge);
        s.close();
    }
    //按条件查询
    void testEntityQuery(){
        Session s = HibernateUtil.getSession();
        //1.HQL
        //编号为4的老师有哪些学生
//        String hql = "from StudentModel where  teacher.uuid= :uuid";
//        //2.Query
//        Query q = s.createQuery(hql);
//        q.setLong("uuid",4L);

        String hql = "from StudentModel where teacher = :teacher";
        Query q = s.createQuery(hql);
        TeacherModel tm = new TeacherModel();
        tm.setUuid(4L);
//        tm.setTeacherName("李若亮");
        //为hql赋值对象参数
        q.setEntity("teacher", tm);
        List<StudentModel> queryList = q.list();
        for(StudentModel sm:queryList){
            System.out.println(sm);
        }
    }
    //无条件查询
    void testNoCondQuery(){
        Session s = HibernateUtil.getSession();

        String hql = "from TeacherModel where teacherName = nick";
        Query q = s.createQuery(hql);
        List<TeacherModel> queryList = q.list();
        for(TeacherModel sm:queryList){
            System.out.println(sm);
        }
    }
    //投影查询
    void testOtherQuery(){
        Session s = HibernateUtil.getSession();

        String hql = "select new TeacherModel(teacherName,nick) from TeacherModel";
        Query q = s.createQuery(hql);
        List<TeacherModel> queryList = q.list();
        for(TeacherModel sm:queryList){
            System.out.println(sm);
        }
    }
    //投影查询list
    void testOtherQuery2(){
        Session s = HibernateUtil.getSession();

        String hql = "select new list(teacherName,nick) from TeacherModel";
        Query q = s.createQuery(hql);
        List<List<String>> queryList = q.list();
        for(List<String> sm:queryList){
            for(String sa:sm){
                System.out.println(sa);
            }
        }
    }
    //查询分组
    void testGroupQuery(){
        Session s = HibernateUtil.getSession();

        String hql = "select skill,count(skill) from StudentModel group by skill";
        Query q = s.createQuery(hql);
        List<Object[]> queryList = q.list();
        for(Object[] objs:queryList){
            for(Object obj:objs){
                System.out.print(obj+"\t");
            }
            System.out.println();
        }
    }
    //查询分组
    void testObejcts(){
        Session s = HibernateUtil.getSession();

        String hql = "from java.lang.Object";
        Query q = s.createQuery(hql);
        List<Object> queryList = q.list();
        for(Object obj:queryList){
            System.out.println(obj);
        }
    }
    //配置格式的查询
    void testConfQuery(){
        Session s = HibernateUtil.getSession();

        Query q = s.getNamedQuery("getAll");
        q.setString("name", "李若亮");
        List<Object> queryList = q.list();
        for(Object obj:queryList){
            System.out.println(obj);
        }
    }

    public static void main(String[] args) {
        new HQLApp().testConfQuery();
    }
}

原文地址:https://www.cnblogs.com/xyhero/p/9351717.html

时间: 2024-07-31 20:45:55

hibernate框架学习之数据查询(HQL)helloworld的相关文章

hibernate框架学习之数据查询(QBC)helloworld

package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projection; impo

hibernate框架学习之数据查询(QBC)

lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 ?获取Session对象 ?初始化Criteria对象(使用Session对象创建) ?由Session对象创建 ?传入要查询的数据模型类 ?添加各种查询条件 ?执行查询返回结果(返回单条数据或集合数据) lQBC查询格式非常简单,更符合编程人员的习惯 ?Criteria对象用于由Session对象创建,传入要查询的PO类 ?Criteria c = s.createC

hibernate框架学习笔记7:HQL查询、Criteria查询

HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_linkman; priv

hibernate框架学习笔记10:HQL查询详解

HQL语句中不可以出现与表有关的内容,而是对象的属性 实体类(注意配置文件): package domain; import java.util.HashSet; import java.util.Set; //客户实体 public class Customer { private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private S

Hibernate框架学习(五)——批量查询(概述)

一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能出现任何数据库相关的信息 1)?占位符 2)命名占位符 3.分页查询 二.Criteria查询(单表条件查询) Hibernate自创的无语句,面向对象查询 1.基本查询 2.条件查询: SQL中的表示 Criteria中的表示 > gt >= ge < lt <= le == eq

MySQL基础学习之数据查询

一般查询 SELECT * FROM 表名 SELECT 属性名  FROM  表名 条件查询 SELECT 属性名 FROM 表名  WHERE 条件表达式 查询数据值1,数据值2的表单 SELECT *  FROM  表名  WHERE  属性名 [NOT] IN(数据值1,数据值2....) 查询数值1,数据2的表单 SELECT *  FROM  表名  WHERE  属性=值  AND 属性1=值1 查询数值1到数值2之间的表单 SELECT *  FROM  表名  WHERE  属

j2ee开发之hibernate框架学习笔记

hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换存在着转换问题->orm,对象和关系的一种映射 3.框架:解决一种问题的方案集合! 4..配置文件 Xxx.cfg.xml  主配置文件 xxx.hbm.xml映射文件: 映射基础 普通属性 主键 集合属性 关联关系:一对多  多对一 多对多  一对一 继承结构 5.其他特性:数据库连接池  懒加载

二、框架学习 (一)Hibernate框架学习 (2)Hibernate概念和api使用

目录 1 实体类编写规则 2 hibernate主键生成策略 3 实体类操作 (1)crud操作 (2)实体类对象状态 4 hibernate的一级缓存 5 hibernate的事务操作 (1)事务代码规则写法 6 hibernate其他的api(查询) 正文 实体类编写规则 1 实体类里面属性是私有的 2 私有属性使用公开的set和get方法操作. 3 要求实体类有属性作为唯一值(一般使用id值) 4 实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类 (1)八个基本数据类型对应的

hibernate 框架学习笔记---网上摘抄的一个非常好的例子

编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao.查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考. 首先定义接口泛型DAO接口 GenericDao package com.th.huz; import java.io.Serializable;import java.util.Collection;import java.util.Iterator;import java.uti