hibernate -2

1. 唯一标识OID的检索方式
    * session.get(对象.class,OID)
2. 对象的导航的方式

3. HQL的检索方式
    * Hibernate Query Language  -- Hibernate的查询语言

4. QBC的检索方式
    * Query By Criteria -- 条件查询

5. SQL检索方式(了解)
    * 本地的SQL检索
HQL的查询方式概述

1. HQL的介绍
    * HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似
    * 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式

2. HQL与SQL的关系
    * HQL 查询语句是面向对象的,Hibernate负责解析HQL查询语句, 然后根据对象-关系映射文件中的映射信息, 把 HQL 查询语句翻译成相应的 SQL 语句. 
    * HQL 查询语句中的主体是域模型中的类及类的属性
    * SQL 查询语句是与关系数据库绑定在一起的. SQL查询语句中的主体是数据库表及表的字段
HQL的查询演示

1. HQL基本的查询格式
    * 支持方法链的编程,即直接调用list()方法
    * 简单的代码如下
        * session.createQuery("from Customer").list();

2. 使用别名的方式
    * 可以使用别名的方式
        * session.createQuery("from Customer c").list();
        * session.createQuery("select c from Customer c").list();

3. 排序查询
    * 排序查询和SQL语句中的排序的语法是一样的
        * 升序
            * session.createQuery("from Customer order by cust_id").list();

        * 降序
            * session.createQuery("from Customer order by cust_id desc").list();

4. 分页查询
    * Hibernate框架提供了分页的方法,咱们可以调用方法来完成分页
    * 两个方法如下
        * setFirstResult(a)     -- 从哪条记录开始,如果查询是从第一条开启,值是0
        * setMaxResults(b)      -- 每页查询的记录条数

    * 演示代码如下
        * List<LinkMan> list = session.createQuery("from LinkMan").setFirstResult(0).setMaxResults().list();

5. 带条件的查询
    * setParameter("?号的位置,默认从0开始","参数的值"); 不用考虑参数的具体类型
    * 按位置绑定参数的条件查询(指定下标值,默认从0开始)
    * 按名称绑定参数的条件查询(HQL语句中的 ? 号换成 :名称 的方式)
    * 例如代码如下
        Query query = session.createQuery("from Linkman where lkm_name like ? order by lkm_id desc");
        query.setFirstResult(0).setMaxResults(3);
        query.setParameter(0, "%熊%");
        List<Linkman> list = query.list();
        for (Linkman linkman : list) {
            System.out.println(linkman);
        }
HQL的投影查询

1. 投影查询就是想查询某一字段的值或者某几个字段的值
2. 投影查询的案例
    * 如果查询多个字段,例如下面这种方式
        List<Object[]> list = session.createQuery("select c.cust_name,c.cust_level from Customer c").list();
        for (Object[] objects : list) {
            System.out.println(Arrays.toString(objects));
        }

    * 如果查询两个字段,也可以把这两个字段封装到对象中
        * 先在持久化类中提供对应字段的构造方法
        * 使用下面这种HQL语句的方式
            List<Customer> list = session.createQuery("select new Customer(c.cust_name,c.cust_level) from Customer c").list();
            for (Customer customer : list) {
                System.out
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值