知识大全 Hibernate:HQL/QBC查询语言比较的用法
Posted 知
篇首语:瞄准还不是射中,起跑还不算到达。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate:HQL/QBC查询语言比较的用法相关的知识,希望对你有一定的参考价值。
Hibernate:HQL/QBC查询语言比较的用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Hib的检索方式
导航对象图检索方式 通过已经加载的对象 调erator()方法可以得到order对象
如果是首次执行此方法 Hib会从数据库加载关联的order对象 否则就从缓存中得到
OID检索方式 通过session的get load方法知道了OID的情况下可以使用
HQL检索方式 使用面向对象的HQL查询语句session的find方法利用HQL来查询
QBC检索方式 利用QBCAPI来检索它是封装了基于字符串的查询语句
本地的SQL检索方式 使用本地数据库的SQL查询语句Hib会负责把检索到的JDBC结果集映射为持久化对象图
五种检索方式的使用场合和特点
HQL 是面向对象的查询语言 同SQL有些相似是Hib中最常用的方式
查询设定各种查询条件
支持投影查询 检索出对象的部分属性
支持分页查询 允许使用having和group by
提供内制的聚集函数 sum() min() max()
能调用用户的自定义SQL
支持子查询 嵌入式查询
支持动态绑定参数
建议使用Query接口替换session的find方法
Query Q = session createQuery( from customer as c where c name = :customerName + and c age = :customerAge );
query setString ( customerName tom );
query setInteger( customerAge );
list result = query list();
QBC : QBCAPI提供了另一种方式 主要是Criteria接口 Criterion接口和Expression类
Criteria criteria = session createCriteria(customer class);
Criterion criterion = Expression like( name t% );
Criterion criterion = Expression eq( age new Integer( ));
Critera = criteria add(criterion ) ;
Critera = criteria add(criterion ) ;
list result = criteria list();
或是 list result = session createCriteria(Customer class) add(Expression eq( this name tom )) list();
SQL : 采用HQL和QBC检索时 Hib生成SQL语句适用所有数据库
Query query = session createSQLQuery( select c * from customers c where c name like : customername + and c age = :customerage c customer calss);
query setString( customername tom );
query setInteger( customerage );
list result = query list();
/////////////多态查询
HQL session createQuery( from employee );
QBC session createCriteria(employee class);
HQL : session createQuery( from hourlyEmployee );
QBC : session createCriteria(hourlyEmployee class);
下面的HQL查询语句将检索出所有的持久化对象
from java lang Object ;
from java io serializable ;
////////////查询的排序
查询结果按照客户姓名升序排列
HQL
Query query = session createQuery ( from customer c order by c name );
QBC
Criteria criteria = session createCriteria(customer class);
criteria addOrder(order asc( name ));
HQL :
Query query = session createQuery ( from customer c order by c name asc c age desc );
QBC :
Criteria criteria = session createCriteria(customer class);
criteria addOrder(order asc ( name ));
criteria addOrder(order desc( age ));
import net sf hibernate pression Order
import mypack Order
Criteria criteria = session createCritria (mypack Order class);
criteria addOrder(net sf hibernate Order asc( name ));
///////////HQL语句的参数绑定Query接口提供了绑定各种Hib映射类型的方法
setBinary()
setString()
setBoolean()
setByte()
setCalendar()
setCharacter()
setDate()
setDouble()
setText()
setTime()
setTimestamp()
setEntity()//把参数与一个持久化类的事例绑定lsit result = session createQuery( from order o where o customer = :customer ) setEntity( customer customer) list ;
setParameter()//绑定任意类型的参数
setProperties()//把命名参数与一个对象的属性值绑定 Query query = session createQuery( from customer c where c name =: name + and c age =:age );
相关参考