原理很简单,传入要查询的SQL 语句,得到所有数据,根据PAGE SIZE 计算ROW_NUMBER, 然后再包装一个SQL语句就可以了。但这里是用Hibernate做,所以直接实现Hibernate Dialect 方言比较好.
package com.ruijie.spl.common.dialect; /** * SQLServer2005的Dialect,主要封装2005的高效分页语句 * */ import org.hibernate.dialect.SQLServerDialect; import com.ruijie.spl.common.exception.RgsplRuntimeException; public class SQLServer2005Dialect extends SQLServerDialect { public SQLServer2005Dialect() { super(); } public String getLimitString(String querySelect, int offset, int limit) { String[] querySelects = getQuerySelects(querySelect); StringBuffer result = new StringBuffer(querySelect.length() + 100); result.append("select * from("); result.append(querySelects[0]); result.append(",row_number()over("); result.append(querySelects[2]); result.append(") as row"); result.append(querySelects[1]); result.append(") tmp where tmp.row between "); result.append(offset+1); result.append(" and "); result.append(limit); return result.toString(); } // 通过sql语句,得到相应的select、from and where、order by三条语句 private String[] getQuerySelects(String querySelect) { String[] result = new String[3]; if (querySelect.indexOf(" from ") == -1 || querySelect.indexOf(" order by ") == -1) { throw new RgsplRuntimeException("不支持不带from和order by的分页查询语句"); } String select = querySelect.substring(0, querySelect.indexOf(" from ")); // while (select.endsWith(" ")) { // select.substring(0, select.length() - 1); // } result[0] = select; result[1] = querySelect.substring(querySelect.indexOf(" from "), querySelect.indexOf(" order by ")); result[2] = querySelect.substring(querySelect.indexOf(" order by ")); return result; } public boolean supportsLimitOffset() { return true; } }
相关推荐
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
达梦数据库各版本的hibernate方言包,包含版本 DmDialect-for-hibernate2.0、DmDialect-for-hibernate2.1、DmDialect-for-hibernate3.0、DmDialect-for-hibernate3.1、DmDialect-for-hibernate3.6、DmDialect-for-...
瀚高数据库hibernate方言 hgdb-hibernate-dialect
MYSQL常用命令 和SQL语句(方言dialect)
hibernate3.6.0dialect.jar
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
Hibernate连接SQLite配置步骤: 1、添加SQLite库: 1.1、将两个jar包:com.zy.hibernate.dialect.SQLiteDialect.jar、sqlite-jdbc-3.7.2.jar拷贝到“\WEB-INF\lib”文件夹下; 2、配置hibernate: 2.1、将...
hibernate3dialect
* 达梦8 hibernate方言包对应版本说明 /*************************************** jar包在dialect目录下: 1. DmDialect-for-hibernate2.0.jar 对应 Jdk1.4及以上, hibernate2.0 环境 2. DmDialect-for-hibernate2.1...
达梦Hibernate方言2.0至4.0
达梦Hibernate方言2.0至4.0,当工具书用的.最新方言还是要参考用户手册.方言覆盖的数据库越来越多了
Microsoft SQL Server org.hibernate.dialect.SQLServerDialect SAP DB org.hibernate.dialect.SAPDBDialect Informix org.hibernate.dialect.InformixDialect HypersonicSQL org.hibernate.dialect....
达梦数据库方言 (dialect) jar包 包含hibernate各版本,DmHibernateSpatial-1.0.jar, DmHibernateSpatial-1.1.jar,DmDialect-for-hibernate5.3.jar ... DmDictionary.jar,dmjooq-dialect-3.12.3.jar,gt-dameng-...
凤凰冬眠方言描述Apache Phoenix Hibernate方言。建造 该项目使用maven进行构建。 只需在项目根目录中键入下一个命令。 mvn clean install要部署到Bintray,只需在项目根目录中键入下一个命令。 将替换为当前的Gpg...
使用方法:直接在hibernate配置文件...<property name="hibernate.dialect">SQLiteUtil.SQLiteDialect 此包使用的hibernate版本为4.3.5-Final,sqlite jdbc驱动版本为sqlite-jdbc-3.7.2.jar.需要自行下载,此处不在提供.
南大通用GBase数据库GBase_Hibernate3.2.3_GA-Dialect_8.3.81.51_build50.1.jar
达梦数据库7.6最新的驱动包及hibernate方言包,含JDK1.5到JDK1.8驱动包和haibernate 5.3及一下方言包
hibernate 4以上Hibernate.INTEGER之类的不能使用了,之前使用的SQLiteDialect.java编译不过去了,这个可以。
第一步:hibernate.cfg.xml 加入: <property name="hibernate.proxool.pool_alias">dbpool</property> ...jdbc:microsoft:sqlserver://243.155.187.236:1433;DatabaseName=study </driver-url> <driver-
mybatis 框架关于mysql、oracle、db2等数据库的sql方言包。