Hibernate学习(二)


HQL联接查询

HQL支持的联接类型
这里写图片描述

内联接:

  • 语法:from Entity inner join [fetch] Entity.property
  • 忽略fetch关键字,我们得到的结果集中,每行数据都是一个Object数组

本地SQL查询

Hibernate对本地SQL查询提供了内置的支持:

  • Session的createSQLQuery()方法返回SQLQuery对象
  • SQLQuery接口继承了Query接口
  • SQLQuery接口的addEntity()方法将查询结果集中关系数据映射为对象
  • 通过命名查询实现本地SQL查询

通过命名查询实现本地SQL查询:

  • 使用<sql-query>元素定义本地SQL查询语句
  • 与<class>元素并列
  • 以<![CDATA[SQL]]>方式保存SQL语句
  • 通过Session对象的getNamedQuery()方法获取该查询语句。

这里写图片描述

//原生SQL
    @Test
    public void test12(){
        String hql= "select * from h_user";
        SQLQuery query=session.createSQLQuery(hql);
        //设置结果集转换的类型
        query.addEntity(User.class);
        List<User> list = query.list();
        System.out.println(list);
    }

Criteria查询(标准查询)

Criteria查询采用面向对象方式封装查询条件,又称为对象查询
对SQL语句进行封装
采用对象的方式来组合各种查询条件
由Hibernate 自动产生SQL查询语句
Criteria由Hibernate Session进行创建

这里写图片描述

这里写图片描述


Restrictions常用限定查询方法

这里写图片描述


Criteria查询实现分页、排序

排序

Criteria查询不仅能组合出SQL中where子句的功能,还可以组合出排序查询功能;

使用org.hibernate.criterion.Order对结果进行排序;

排序的方法为:

  • asc()
  • desc()

分页

Criteria的setMaxResults()方法可以限定查询返回数据的行数;

Criteria的setFirstResult()设定查询返回结果的第一行数据的位置;

结合以上的两个方法即可实现简单分页。

原文地址:https://www.cnblogs.com/aixing/p/13327636.html