hibernate 查询

来源:互联网 发布:c语言.h文件 编辑:程序博客网 时间:2024/06/03 10:53

HQL的查询方式概述

1. HQL的介绍

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

2. HQL与SQL的关系

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

Hibernate框架的查询方式

1. 唯一标识OID的检索方式
    * session.get(对象.class,OID)
2. 对象的导航的方式
    Department department = session.get(Department.class,1);    Set<Employee> employes = department.getEmployess();    for(Employee employee: employess){          log.info(employee);    }
3. HQL的检索方式
    * Hibernate Query Language  -- Hibernate的查询语言

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

hql 语句:

session.save(user);  //添加session.get(User.class,1); //查询session.update(user);  //更新session.delete(user);  //删除

1. 查询单一属性  返回List中装的是属性类型

String hql = "FROM User";Query query = session.createQuery(hql);List<User> lists = query.list();

2. 查询多个属性 

String hql = "SELECT new User(name,age) FROM User";Query query = session.createQuery(hql);List<User> lists = query.list();

3.查询单个字段

String hql = "SELECT name FROM User";List<String> lists = session.createQuery(hql).list();

4.返回唯一结果 uniqueResult 

String hql = "SELECT name FROM User";String name= session.createQuery(hql).uniqueResult();

参数查询

1.属性

 String hql = "FROM User WHERE name=:username AND age=:age";Query query = session.createQuery(hql);query.setParameter("username", "小明");  //设置参数query.setParameter("age", 19);List<User> lists = query.list();

2.拼接 (安全性低) 

String hql = "FROM User  WHERE name='"+username+"'";List<User> lists = session.createQuery(hql).list();

3.站位符: (hql 占位符 是从 0 开始,sql占位符时 从1开始 )

String hql = "FROM User WHERE name=? AND age=?";Query query = session.createQuery(hql);query.setParameter(0, "小明");query.setParameter(1, 12);



原创粉丝点击