Hibernate-HQL(Hibernate Query Language)


面向对象的数据查询,直接使用实体类的属性实现查询。

格式

将表格信息修改为 JavaBean 信息

  • SQL
select  <cloums> from <table-name> where <id> = ?
  • HQL
select <class.属性> from <class-name>  as s where <s.属性>=?

简单使用

// 1. 创建 session 对象
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
// 2. 创建查询对象
Query query = session.createQuery(hql);
// 3. 执行查询方法,获取数据
List<Student> list = query.list();

查询

from

  from Student // 从 Student 关联的 数据表进行查询
  from Student as s // 表格取别名
  from Student s //省略 as

select

  select s from Student as s // 查询全部信息
  select s.id, s.name from Student as s // 查询相应属性
  select new Student(s.id,s.name) from Student s// 将数据封装成对象,必须有相应的构造函数

where & 不同参数的设置形式

  where s.age between 18 and 20
  where s.age between  :ageMin and :ageMax

使用 :name 的形式 设置HQL 中参数

运用 query.setParameter(“name”, value); 的方式设置变量的值

  where s.age between  ? and ?

使用 ? 的形式设置 参数

则运用 query.setParameter(index, value); 的形式设置变量的值,下标从 0 开始

  where s.age in (:ids)

query.setParameterList(“ids”, int []{1,2,3,4,4}); 设置集合参数

统计函数

min(), max(), avg(), count(),

  select count( * ) from Strudent
  select min(s.id) from Student s

order by

  • asc 升序 (默认)
  • desc 降序
  where s.age> 20 order by s.name desc

连接查询

  • 内连接 inner (inner join) - inner 可以省略
  • 外连接 outer (outer join , left outer join , right outer join ) - outer 可以省略
  select s.name , d.name from Student s [inner] join s.classes d;
  select s.name , d.name from Student s left [outer] join s.classes d;

distinct 过滤掉重复值

  select distinct s.age from Student s

Query使用

  • creatQuery(HQL);
  • list() : 返回List 查询结果
  • setMaxResults() : 返回最大记录书
  • setParameterList()
  • uniqueResult() : 返回Object 类,当查询结果只有一个时
  • excuteUpdate() : 执行 update 和 delete 语句。

分页查询

  • setFirstResult() : 起始位置,从 0 开始
  • setMaxResults() : 每页记录数
Query query = session.creatQuery("from Student s order by s.id");
query.setFirstResult((pageNum -1) * pageSize);

文章作者: KawYang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 KawYang !
评论
  目录