Hibernate中session.createQuery()与session.createSQLQuery()的区别与使用

两者的区别:
Query createQuery ( String queryString)
创建一个查询字符串中给定的HQL 查询新的实例。
参数:HQL查询
返回值:Query查询
抛出异常:HibernateException

SQLQuery createSQLQuery ( String queryString)
创建一个新的查询字符串给定的SQL实例SQLQuery的。
参数:SQL查询
返回值:SQLQuery
抛出异常:HibernateException

简单来说,createQuery使用hql语句进行查询,以Hibernate生成的Bean为对象,并将对象装入List中返回。
createSQLQuery使用sql语句进行查询,是以对象数组形式返回。

createSQLQuery使用情况:

1:

SQLQuery query = session.createSQLQuery(sql)
.addScalar("XXXX",StandardBasicTypes.DATE)
.addScalar("XXXX",StandardBasicTypes.STRING)
.addScalar("XXXX",StandardBasicTypes.INTEGER)
.addScalar("XXXX",StandardBasicTypes.LONG)

.setInteger("XXXX", int)
.setDate("XXXX", date)
.setDouble("XXXX",double)

.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);


addScalar是为sql语句中要查询的字段设置类型。
setInteger,setDate,setDouble是为sql语句中由程序输入的判断条件赋值。
Transformers.ALIAS_TO_ENTITY_MAP是将最终查出结果设置为Map格式。


2:
Query query = session.createSQLQuery(sql)
.addScalar("XXXX",StandardBasicTypes.DATE)
.addScalar("XXXX",StandardBasicTypes.STRING)
.addScalar("XXXX",StandardBasicTypes.INTEGER)
.addScalar("XXXX",StandardBasicTypes.LONG)

.setInteger("XXXX", int)
.setDate("XXXX", date)
.setDouble("XXXX",double)

.setResultTransformer(Transformers.aliasToBean(XXXX.class));
Transformers.aliasToBean(XXXX.class)是将最终查询的结果转化成自定义或者Hibernate生成的Bean实体类的对象。


3:

Query query = session.createSQLQuery(sql).addEntity(XXXX.class); 
XXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean。 
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值