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);