Hibernate HQL

使用Query接口解析执行HQL语句
Query query = session.createQuery(HQL);
在HQL语句中,参数用[:NAME]/[?]定义,第一种索引值用NAME的值,第二种索引值用数字,从0开始
常用方法
list() 
返回数据集,直接查找对象所有字段"from [tablename] where...",返回实体对象。
查询部分字段"select ... from [tablename] where ..."一个字段返回Object,一个以上返回Object[]数组。
也可以构造一个对象"select new [ObjName](args...) from [tablename] where ...",返回new出来的对象,
需要类提供构造方法。


setXXX(索引,值) 
设置HQL语句中指定类型的参数的值


setParameter(索引, 值) 
设置HQL语句中参数的值


excuteUpdate()
批量更新删除


uniqueResult()
获得唯一查询结果


引用查询
在*.hbm.xml中添加节点
<query name="自定义名称">
  <![CDATA[select ... from ... where ...]]>
</query>


通过session.getNamedQuery(自定义名称)获得HQL语句


left join 左连接 左表取全量数据
from [table] as tb left join c.子表对象属性名
查询结果可以根据instanceof 关键字判断是否是XX对象,强行转换后使用对象访问属性
HQL语句不用写对应关系,映射配置会帮助识别


right join 右连接 右表取全量数据
from [table] as tb right join c.子表对象属性名


inner join 内联 取两表条件匹配的数据
from [table] as tb inner join c.子表对象属性名


full join 全链接 取两表全量数据(并不是所有数据库都支持全连接)
from [table] as tb full join c.子表对象属性名


--------------------------------
原生SQL的支持
SQLQuery q = session.createSQLQuery(sql).addEntity(class)


--------------------------------
注解命名查询
@NamedQueries({
  @NameQuery(
      name="topic.selectCertainTopic", 
      query="form ... where ..."),
  ...
})


Query q = session.getNamedQuery("topic.selectCertainTopic")
q.setParameter(..)
...


--------------------------------
Query提供了分页查询
setFirstResult(int) 索引位置
setMaxResult(int) 每页显示的记录数量







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值