hibernate 查询

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值