17
回答
公司用Hibernate框架
【腾讯云】学生服务器套餐10元/月 >>>   

可惜我不喜欢写HQL,,每次都用 stringBuffer  来写SQL 语句,直接我要的 查询结果


毕竟sql 直接在oracle上调好了,,能直接在 dao上使用了

请问老是这样做,是不是会影响性能,有些sql很复杂呀,关联了好几张表做统计, 有没有什么优化的

建议, 这是SQL:
 select distinct e. marketing_id, e.* ,ec.v , 
 (select   count(service_id) co from service_user d where  d.service_id in(select n.service_id  from service_marketing n  where n.marketing_id =e.marketing_id)) pp  ,
   trunc((ec.v  / (select   count(service_id) co from service_user d where  d.service_id in(select n.service_id  from service_marketing n  where n.marketing_id =e.marketing_id))  * 100),2)   
     from marketing e ,(select count(marketing_id) v ,u.marketing_id from marketing_userinfo u group by u.marketing_id)  
   ec where e.marketing_id=ec. marketing_id  order by  ec.v desc


 

举报
Baclk5
发帖于4年前 17回/982阅
共有17个答案 最后回答: 4年前

做复杂的统计查询本身就不是hibernate的强项。
如果这样的复杂查询在项目中占比较少,将就着用,或者简单封装下JDBC查询操作。
如果是专业的数据统计类项目,复杂查询统计很多,还是别指望hibernate了。

非常不理解各位的看法:这么复杂的统计操作,怎么就不能拼sql了?

每次都用 stringBuffer  来写SQL 语句,你是在找死。
--- 共有 5 条评论 ---
一号男嘉宾回复 @王涛 : 这样会死得有尊严点。 4年前 回复
王涛StringBuilder sb = new StringBuilder("from User u"); if(null != name) { sb.append("u.name=?"); } …… 这样不会死吧 4年前 回复
rabbitgg拼接的可以使用绑定参数,参数使用map传入即可 4年前 回复
一号男嘉宾拼接的SQL容易被注入 4年前 回复
rabbitgg为什么认为那样会找死? 4年前 回复
呵呵!既然要求了,那你还那样干,这不是作死的节奏嘛!如果HQL不能实现了可以沟通一下是否能使用sql。如果强制要用那就好说,那你那个sql弄成views 就可以了。
--- 共有 1 条评论 ---
Baclk5大哥呀,怎么写成view呀,视图用的比较少,额,再说了写成view是不是每次新建表,都要重新导入view呀? 4年前 回复

拼hql和sql者一律开除,教育不过来的。

不会使用hibernate可以学,不学就是你的错了。检索条件个数变化,禁止用hql,采用criteria

--- 共有 3 条评论 ---
陈文锦的秘密criteria的功能十分有限吧? 连接表的时候就捉襟见肘了 4年前 回复
唐代de豆腐拼hql又咋滴。你还以为会sql注入 4年前 回复
th小米粥技术是拿来用的。合适的地方用合适的技术。开除?装!! 4年前 回复
如果类似于统计报表的sql之类的。或者业务操作特别复杂的。建议写成配置。可修改的好一点。
--- 共有 1 条评论 ---
Baclk5怎么个写成配置呀?跪求指点 4年前 回复
顶部