崩溃中!Nhibernate的数据分页.

简介:

这两天在做项目一个模块中关于基于Asp.net MVC ,底层的数据访问用的是Nhibernate OR Mapping技术, 其中涉及到数据分页. 确实令人苦恼!

Nhibernate中我刚开始的思路是做一个十万中量级别的数据分页,起初打算在Nhibernate中用T-SQl来做,而且在Asp.MVC框架中只能使用客户端控件,而非Nhibernate中HQL查询语法,但是在写好T-SQl语句后发现一个Nhibernate虽然对Avg count(*)等加以支持,但Top关键字确无法支持,中途也利用平畴SQL的放法,一个下午后无果而返.

下午下班后我有尝试一种在Nhibernate中使用存储过程的方式来进行数据分页,即把原来的T-sql十万当量的数据分页封装一下,但是8:30自后,发现两点对存储过程的现在,一方面配置上问题都是第一次接触,而且Nhibernate2.0版本对存储过程要求配置很严格,另外必须返回一个数据集,功能就都没法实现,更不要说数据分页的性能了,这种方式抛弃.

在网上Google一下发现园子里也有不少关于Nhibernate的数据分页,就抓紧时间看了一下,其中一篇文章倒是打破了我以往的思路,

就是把利用Nhibernate中HQL语法查询出所需数据,

nhibernate 提供了一个接口IQuery用来设置查询语句、参数等,此接口的实现类为QueryImpl,跟CriteriaImpl一样,不能在 nhibernate程序集外直接创建,只能通过session的CreateQuery来取得一个IQuery接口,

Code
IQuery接口的一些方法:
  SetMaxResults:设置返回的最大结果数,可用于分页;
  SetFirstResult:设置首个对象返回的位置,可用于分页;
  SetTimeout:设置操作的超时值,此值将传递给IDbCommand对象;
  Enumerable:返回查询的枚举对象;
  List:返回查询的对象集合;
  SetParameter:设置查询语句中参数的值和类型
 

从上面可以发现两个非常重要的方法SetFirstResult(int startindex)和SetMaxResults(int size)

这两个方法组合其实就代替了SQl中Top 关键字,当取出数据后装入Ilist<>中,通过SetFirstResult设置开始取位置,而SetMaxResults就是设定一次取出的数据量是多少,这样就很明了! 当然只是一种粗略的思路,具体细节在验证后我会发一片文章上来,

也许这种方式并不合理,还希望有这方面经验的仁兄能指点一二,不胜感激!


本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765423


相关文章
|
4月前
|
SQL Java 数据库连接
mybatis常见分页技术和自定义分页原理实战
mybatis常见分页技术和自定义分页原理实战
|
8月前
|
XML 缓存 Java
2021-08-07mybaties结尾:查询缓存,dao开发分页+项目改造+spring框架
2021-08-07mybaties结尾:查询缓存,dao开发分页+项目改造+spring框架
195 0
|
6月前
|
Java 数据库 Spring
【异常解决】解决mybatis-plus分页查询默认最多查询500条记录的问题,真是个大坑啊
【异常解决】解决mybatis-plus分页查询默认最多查询500条记录的问题,真是个大坑啊
146 0
|
10月前
|
SQL 前端开发 数据库
Mybatis-Plus分页插件查询慢解决方案
Mybatis-Plus分页插件查询慢解决方案
603 0
|
SQL 前端开发
【mybatis-plus】分页、逻辑删除
【mybatis-plus】分页、逻辑删除
【mybatis-plus】分页、逻辑删除
|
SQL Java 数据库连接
mybatis常见分页技术和自定义分页原理实战(下)
mybatis常见分页技术和自定义分页原理实战(下)
222 0
mybatis常见分页技术和自定义分页原理实战(下)
|
SQL 安全 前端开发
mybatis常见分页技术和自定义分页原理实战(上)
mybatis常见分页技术和自定义分页原理实战(上)
318 0
mybatis常见分页技术和自定义分页原理实战(上)
|
SQL 存储 前端开发
使用DbContextPool提高EfCore查询性能
① 提示EFCore2.0新推出的DbContextPool特性,有效提高SQL查询吞吐量 ② 尝试使用SQL Server 内置脚本自证会话中有效连接数
使用DbContextPool提高EfCore查询性能
|
Java 数据库连接 网络安全
SSH框架整合遇到的错误——Hibernate查询语句出现错误
在调试前台注册界面,填写注册信息,用户名Ajax异步验证时报错,报错文件在Dao文件的查询语句中。   报错信息: java.lang.IllegalArgumentException: org.hibernate.
1992 0