- 浏览: 980867 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
虽然Hibernate帮助我们完成了分页功能,但若有的数据库不支技分页查询,Hibernate的分页的效率可就不高了,它先查询出一部分然后现在内存当中取出你所要的那一页。
Hibernate支持Native SQL(使用SQL Query)也、支持存储过程下面就来说说Hibernate调用存储过程来分页
在数据库创建Ture_Page存储过程
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
ALTER PROCEDURE Ture_Page
@PageSize int, --每页的行数
@PageIndex int, --1 代表第一页
@Col varchar(250), --要显示的字段
@Table varchar(200), --所用到的表,复条的话就写from与where之间的内容
@Where varchar(200)='', --所用到的条件
@OKey varchar(50), --排序字段
@Order varchar(20)='ASC' --排序方式
as
declare @cmdstr varchar(2000)
declare @cmdstrcount varchar(2000)
set nocount on
set @cmdstr='select top '
set @cmdstr=@cmdstr+convert(nvarchar,@PageSize)
if @Order='DESC' and @PageIndex>1
set @cmdstr=@cmdstr+' '+@Col+' from '+@Table+' where '+@OKey+'<'
else if @PageIndex=1
set @cmdstr=@cmdstr+' '+@Col+' from '+@Table+' where '+@OKey+'>='
else
set @cmdstr=@cmdstr+' '+@Col+' from '+@Table+' where '+@OKey+'>'
if @PageIndex>1
begin
if @Order='ASC'
set @cmdstr=@cmdstr+'(select max ('+@OKey+') from (select top '
else
set @cmdstr=@cmdstr+'(select min ('+@OKey+') from (select top '
set @cmdstr=@cmdstr+convert(nvarchar,(@PageIndex-1)*@PageSize)
if @Where<>''
set @cmdstr=@cmdstr+' '+@OKey+' from '+@Table+' where '+@Where+' order by '+@OKey+' '+@Order+') as t) '
else
set @cmdstr=@cmdstr+' '+@OKey+' from '+@Table+' order by '+@OKey+' '+@Order+') as t) '
end
else
set @cmdstr=@cmdstr+' 0 ' --convert(nvarchar,0)
print @cmdstr
if @Where<>''
set @cmdstr=(@cmdstr+' and '+@Where+' order by '+@OKey+' '+@Order)
else
set @cmdstr=(@cmdstr+' order by '+@OKey+' '+@Order)
print @cmdstr
exec(@cmdstr)
set nocount off
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Hibernate的配置文件:
<hibernate-mapping>
<class name="com.mengya.entity.TDepart" table="t_depart" schema="dbo" catalog="oaproject">
<id name="DId" type="java.lang.Integer">
<column name="d_id" />
<generator class="native" />
</id>
<property name="DName" type="java.lang.String">
<column name="d_name" length="50" />
</property>
<property name="DRemark" type="java.lang.String">
<column name="d_remark" />
</property>
<set name="TEmps" inverse="true">
<key>
<column name="d_id" />
</key>
<one-to-many class="com.mengya.entity.TEmp" />
</set>
</class>
<!--<sql-query>不在<class>内面--> //这里我使用的Hibernate的getHibernateTemplate()方法也要可直接得到session public Object doInHibernate(Session session) throws HibernateException, SQLException { 在本类中,调用查询类存储过程时,调用session.getNamedQuery("…")方法来获得User.hbm.xml中配置的查询存储过程。在其余的存储过程调用的测试中,首先通过hibernate的session获得connection,然后调用connection对象的相应方法来实现存储过程的调用。 同样,这样做的话也会带来弊端可移植性差。改库的话也要创建该存储过程
<sql-query name="TDepartTure_Page" callable="true">
<return alias="TDepart" class="com.mengya.entity.TDepart">
<return-property name="DId" column="d_id"/>
<return-property name="DName" column="d_name"/>
<return-property name="DRemark" column="d_remark"/>
</return>
{call Ture_Page(?,?,?,?,?,?,?)}
<query-param name="PageSize" type="int"/>
<query-param name="PageIndex" type="int"/>
<query-param name="Col" type="String"/>
<query-param name="Table" type="String"/>
<query-param name="Where" type="String"/>
<query-param name="OKey" type="String"/>
<query-param name="Order" type="String"/>
</sql-query>
</hibernate-mapping>
调用存储过程:
......
/*
* 分页查询所有部门信息
*/
public List getPageDepart(final int pagesize,final int pageindex){
List pagelist=null;
try {
pagelist=getHibernateTemplate().executeFind(new HibernateCallback(){
Query query=session.getNamedQuery("TDepartTure_Page");
query.setInteger(0, pagesize);
query.setInteger(1, pageindex);
query.setString(2, "d_id,d_name,d_remark");
query.setString(3, "t_depart");
query.setString(4, "");
query.setString(5, "d_id");
query.setString(6, "desc");
return query.list();
}
});
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
}
return pagelist;
}
发表评论
-
Hibernate的HQL not like查询
2009-09-24 18:20 9699今天想用Hibernate的Restriction ... -
Hibernate Gossip: Bag
2009-09-14 16:37 1412Bag是集合,与Set不同的是,Bag允许重复的元素,在Jav ... -
hibernate的Restrictions用方说明
2009-06-15 21:09 1833方法 说明 Restric ... -
Hibernate完成常用的JDBC操作下
2009-05-29 16:38 1397一方: package com.mengya.dao; i ... -
Hibernate完成常用的JDBC操作上
2009-05-29 16:35 1858package com.mengya.dao; import ... -
Native SQL查询
2009-04-29 22:02 1520你也可以使用你的数据 ... -
Hibernate中实体对象的生命周期
2009-04-21 22:58 1376实体对象的生命周期在Hibernate应用中是一个很关键的概念 ... -
HibernateTemplate的常规用法
2009-04-21 22:55 1285HibernateTemplate提供非常多的常用方法来完成基 ... -
cascade与inverse的作用
2009-04-21 22:52 1728Cascade:用来说明当对主对象进行某种操作时是否对其关联的 ... -
Hibernate一对一的使用
2009-04-21 22:50 1754数据库:create table student( id ... -
Hibernate多对多说明
2009-04-21 22:47 1359数据库:--学生表create table stu( s_i ... -
query.iterate()与query.list()的区别
2009-04-21 22:46 1959Query query=this.GetSession().c ... -
Hibernate中的Query一些基本用法
2009-04-21 22:45 4990/*** 添加*/public void save(Stu s ... -
Hibernate中Criteria的使用
2009-04-21 22:42 2771/*** 使用Criteria全查询*/public List ... -
Hibernate关联表特殊查询(一方)inner join fetch,left join fet
2009-04-21 22:40 17971inner join fetch/*** 一对多中的一方inn ... -
Hibernate关联表特殊查询(多方)上
2009-04-21 22:39 2312/*** 多条件组合查询*/ public List get ... -
get和load的区别
2009-04-20 17:20 1158(1)load()方法从来就是假定数据在数据库中是存在的,在使 ... -
Hibernate中的ORM关系映射主键生成方式即(Generator的class值)
2009-04-20 17:18 2109主键产生器可选项说明 ...
相关推荐
6. Hibernate 调用 Oracle 存储过程..................................................................................... 6 用 Java 调用 Oracle 存储过程总结..................................................
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
16.2.2. 使用存储过程来查询 16.2.2.1. 使用存储过程的规则和限制 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作...
16.3.2. 使用存储过程来查询 16.3.2.1. 使用存储过程的规则和限制 16.4. 定制SQL用来create,update和delete 16.5. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作...
17.3.2. 使用存储过程来查询 17.3.2.1. 使用存储过程的规则和限制 17.4. 定制SQL用来create,update和delete 17.5. 定制装载SQL 18. 过滤数据 18.1. Hibernate 过滤器(filters) 19. XML映射 19.1. 用XML数据进行...
使用存储过程来查询 16.3.2.1. 使用存储过程的规则和限制 16.4. 定制SQL用来create,update和delete 16.5. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作 ...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
17.3.2. 使用存储过程来查询 17.3.2.1. 使用存储过程的规则和限制 17.4. 定制SQL用来create,update和delete 17.5. 定制装载SQL 18. 过滤数据 18.1. Hibernate 过滤器(filters) 19. XML映射 19.1. 用XML数据...
16.3.2. 使用存储过程来查询 16.3.2.1. 使用存储过程的规则和限制 16.4. 定制SQL用来create,update和delete 16.5. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作...
使用存储过程来查询 17.3.2.1. 使用存储过程的规则和限制 17.4. 定制SQL用来create,update和delete 17.5. 定制装载SQL 18. 过滤数据 18.1. Hibernate 过滤器(filters) 19. XML映射 19.1. 用XML数据进行...
详细的Hibernate3的帮助文档 前言 1. 翻译说明 2. 版权声明 1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. Hibernate入门 2.1. 前言 2.2. ...
16.2.2. 使用存储过程来查询 16.2.2.1. 使用存储过程的规则和限制 16.3. 定制SQL用来create,update和delete 16.4. 定制装载SQL 17. 过滤数据 17.1. Hibernate 过滤器(filters) 18. XML映射 18.1. 用XML数据进行工作...
5.12 hibernate调用存储过程 343 5.13 xml数据持久化 346 5.14 小结 348 第6章 充分利用spring 2.5的ioc利器统管bean世界 349 6.1 java程序员的春天厚礼—spring 2.5 349 6.1.1 爱上spring 2.5的十大理由 350 ...
8. 写出Oracle增删改查的存储过程,并在java中调用。 9. 用ajax技术实现一个级联菜单功能。 10.写出插入法进行排序代码。 11.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是...
19、用JDBC如何调用存储过程 69 20、JDBC中的PreparedStatement相比Statement的好处 71 21、写一个用jdbc连接实例。 71 22、ArrayList和Vector的区别? 73 23、List、Set和Map的区别? 74 24、Collection 和 ...
Java面试题31.jdbc调用存储过程 Java面试题32.简单说一下你对jdbc的理解 Java面试题33.写一个jdbc的访问oracle的列子 Java面试题34.jdbc中preparedStatement比Statement的好处 Java面试题35.数据库连接池的作用 Java...
6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表...