本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9692696
建立时间:2004年12月20日




[java语言]hibernate使用native sql
原创空间

邢红瑞 发表于 2005/5/11 18:59:40

一般来说,hibernate的HQL足够强大,不需要使用native sql,但是有时为了效率和满足特殊的要求,必须要使用native sql。例如 动态从各个表中,查处记录数,由于表名不同,无法使用PreparedStatement,无法使用HQL。使用native sql很简单private static final Log log = LogFactory.getLog(GenericDAO.class); public Integer getcount(String sql) {    Session hsession = null;  try {   hsession = getSession();   Integer query = (Integer)hsession.createSQLQuery(sql).addScalar( "count" , Hibernate.INTEGER).uniqueResult();   return query;  } catch (RuntimeException re) {   log.error("find by example failed", re);   throw re;  } finally {   if (hsession != null)    hsession.close();  } }注意alias 赋予类型,那么 sql 就需要变成以 ”select count(*) as count ” 开头了或者rivate  BigInteger getCountByNativeSQL( final  String sql)  { 2   3         return  (BigInteger) getHibernateTemplate().execute( 4   5                 new  HibernateCallback()  { 6   7                    public  Object doInHibernate(Session session) 8   9                            throws  HibernateException  {10  11                       return  (BigInteger) (session.createSQLQuery(sql).uniqueResult());12  13                   } 14  15               } );16  17     } 18 就返回 BigInteger


阅读全文(4092) | 回复(1) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144765276 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号