前几天系统中用到复杂的SQL,想用HQL 来实现结果HQl语句写不出来。想想hibernate也支持SQL 的,就只能写SQL 封装来实现了。
SQL
select *
from wcsc_service_log a,
(select id, max(end_time) as end_time
from wcsc_service_log
group by id) b
where a.id = b.id
and a.end_time = b.end_time
and COMPCODE = '0001'
JAVA 代码封装这段SQL
public Pagination getServiceLog(String compcode, int pageNo, int pageSize) {
String sql ="select a.* from wcsc_service_log a ,(select id,max(end_time)as end_time from wcsc_service_log group by id)b"+
" where a.id=b.id and a.end_time=b.end_time and a.COMPCODE='"+compcode+"'";
Query queryObject =getSession().createSQLQuery(sql).addEntity(ServiceLog.class);
queryObject.setFirstResult((pageNo - 1) * pageSize);
queryObject.setMaxResults(pageSize);
List<ServiceLog> list =queryObject.list();
int count=getCount(compcode);
Pagination p = new Pagination(pageNo, pageSize, count);
if (count < 1) {
p.setList(new ArrayList<ServiceLog>());
return p;
}
p.setList(list);
return p;
}
代码说明
Query queryObject =getSession().createSQLQuery(sql).addEntity(ServiceLog.class);
这句是执行SQL映射HIBERNATE 查询,注意createSQLQuery
该方法是SQL 语句,我们知道HQL 的方法是
createQuery
另外封装成映射对象addEntity(ServiceLog.class),ServiceLog是你SQL JavaBEAN
返回查询语句这样就可以HIBERNATE待用SQL 了
queryObject.setFirstResult((pageNo - 1) * pageSize);
queryObject.setMaxResults(pageSize);
这2端是分页的语句 如果不分页可以不需要了
这样就实现了HIBERNATE 调用复杂的SQL
分享到:
相关推荐
不错的分页(Hibernate+sqlserver2000分页)值得大家一看。
hibernate分页Hibernate 分页的设计和编码
基于sql语句的分页,效率更高,此jar包包含常用分页格式 使用方法在jboss5的博客中
一个基于Hibernate 和 SQLServer 数据库的分页示例,所有文件和数据库备份都在,只是速度不怎么快,如果加上自动生成下拉框,速度就更慢了,单表、10008条测试数据,如果哪位大侠改进了查询速度望告之:vni2007@163....
使用hibernate实现的分页效果 orm 映射 session 等技能点 带有注释和案例演示 表生成语句
STRUTS2+HIBERNATE分页 实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码
使用hibernate对sqlserver 2005进行增删改查
NULL 博文链接:https://jeffenchung.iteye.com/blog/1472402
hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL
Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码) Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码) Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码)
数据库分页实际上是利用数据库本身SQL扩展的功能进行分页,例如MySQL的 limit 0,50这样的SQL语句。不但速度快,而且非常节省内存。不过不是每种数据库的都有这种分页支持的SQL,例如SQL Server就不支持。 4.scroll...
讲解了Hibernate中实现分页的方法,详细讲解了JDBC+SQL 2005如何实现假分页,并用struts2标签,在页面上显示。
hibernate_struts分页hibernate_struts分页hibernate_struts分页
本人用struts+hibernate写的分页,有详细的注解,方便新手学习,在jsp中实现首页下一页上一页末页功能.index.jsp控制showlist.jsp页面中每页显示的信息条数,本实例在xp+tomcat5.5验证通过.数据库使用的sql2000中的pubs...
让hibernate输出sql语句参数配置.doc
hibernate中使用sql 而不是hql语句
基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) ...
基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于...
java 实现的一个简单的hibernate分页类 可以设置,从某一条开始取、显示的条数 不依赖struts spring
模仿Hibernate生产SQL语句,使用Java反射