Hibernate学习(二) HQL联接查询 本地SQL查询 Criteria查询(标准查询) Restrictions常用限定查询方法 Criteria查询实现分页、排序

Hibernate学习(二)
HQL联接查询
本地SQL查询
Criteria查询(标准查询)
Restrictions常用限定查询方法
Criteria查询实现分页、排序


HQL支持的联接类型
Hibernate学习(二)
HQL联接查询
本地SQL查询
Criteria查询(标准查询)
Restrictions常用限定查询方法
Criteria查询实现分页、排序

内联接:

  • 语法: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()方法获取该查询语句。

Hibernate学习(二)
HQL联接查询
本地SQL查询
Criteria查询(标准查询)
Restrictions常用限定查询方法
Criteria查询实现分页、排序

//原生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进行创建

Hibernate学习(二)
HQL联接查询
本地SQL查询
Criteria查询(标准查询)
Restrictions常用限定查询方法
Criteria查询实现分页、排序

Hibernate学习(二)
HQL联接查询
本地SQL查询
Criteria查询(标准查询)
Restrictions常用限定查询方法
Criteria查询实现分页、排序


Restrictions常用限定查询方法

Hibernate学习(二)
HQL联接查询
本地SQL查询
Criteria查询(标准查询)
Restrictions常用限定查询方法
Criteria查询实现分页、排序


Criteria查询实现分页、排序

排序

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

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

排序的方法为:

  • asc()
  • desc()

分页

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

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

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