使用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) 每页显示的记录数量
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) 每页显示的记录数量