1、DB2Dialect方法
public String getLimitString(String sql, boolean hasOffset) {
int startOfSelect = sql.toLowerCase().indexOf("select");
StringBuffer pagingSelect = new StringBuffer(sql.length() + 100)
.append(sql.substring(0, startOfSelect)) // add the comment
.append("select * from ( select ") // nest the main query in an
.append(getRowNumber(sql)); // add the rownnumber bit into the
int orderByIndex = sql.toLowerCase().indexOf("order by");
if (hasDistinct(sql)) {
pagingSelect.append(" row_.* from ( ");
if (orderByIndex > 0) // whithout ordey by
pagingSelect.append(sql.substring(startOfSelect, orderByIndex));
else
pagingSelect.append(sql.substring(startOfSelect));
pagingSelect.append(" ) as row_"); // close off the inner nested
// select
} else {
if (orderByIndex > 0) // whithout ordey by
pagingSelect.append(sql.substring(startOfSelect + 6,
orderByIndex));
else
pagingSelect.append(sql.substring(startOfSelect + 6));
}
pagingSelect.append(" ) as temp_ where rownumber_ ");
// add the restriction to the outer select
if (hasOffset) {
pagingSelect.append("between ?+1 and ?");
} else {
pagingSelect.append("<= ?");
}
return pagingSelect.toString();
}
输出的sql语句:
select * from( select rownumber() over(order by nocardtran0_.id desc) as rownumber_,
nocardtran0_.id as id13_,
nocardtran0_.account_number1 as account2_13_,
nocardtran0_.account_number2 as account3_13_,
nocardtran0_.acq_id as acq4_13_,
nocardtran0_.acq_inst_resvd as acq5_13_,
nocardtran0_.auth_resp_code as auth6_13_,
nocardtran0_.cell_phone as cell7_13_,
nocardtran0_.cert_info as cert8_13_,
nocardtran0_.content_provider_id as content9_13_,
nocardtran0_.create_time as create10_13_,
nocardtran0_.imei as imei13_,
nocardtran0_.mcc as mcc13_,
nocardtran0_.merchant_country as merchant13_13_,
nocardtran0_.merchant_id as merchant14_13_,
nocardtran0_.merchant_name as merchant15_13_,
nocardtran0_.merchant_type_code as merchant16_13_,
nocardtran0_.mobile_type as mobile17_13_,
nocardtran0_.order_generate_time as order18_13_,
nocardtran0_.order_id as order19_13_,
nocardtran0_.order_info as order20_13_,
nocardtran0_.order_type as order21_13_,
nocardtran0_.orig_submit_time as orig22_13_,
nocardtran0_.orig_trans_serial as orig23_13_,
nocardtran0_.os_info as os24_13_,
nocardtran0_.resp_code as resp25_13_,
nocardtran0_.retrvl_ref_no as retrvl26_13_,
nocardtran0_.service_info as service27_13_,
nocardtran0_.session_id as session28_13_,
nocardtran0_.settle_date as settle29_13_,
nocardtran0_.submit_time as submit30_13_,
nocardtran0_.system_provider_id as system31_13_,
nocardtran0_.terminal_id as terminal32_13_,
nocardtran0_.trans_amount as trans33_13_,
nocardtran0_.trans_currency as trans34_13_,
nocardtran0_.trans_serial as trans35_13_,
nocardtran0_.transmit_time as transmit36_13_,
nocardtran0_.user_dev_id as user37_13_
from
MP_ONLDB.tbl_nocard_trans_info_process nocardtran0_
order by
nocardtran0_.id desc ) as temp_
where
rownumber_ between ?+1 and ?
2、DB2400Dialect方法
public String getLimitString(String sql, int offset, int limit) {
if ( offset > 0 ) {
throw new UnsupportedOperationException( "query result offset is not supported" );
}
return new StringBuffer( sql.length() + 40 )
.append( sql )
.append( " fetch first " )
.append( limit )
.append( " rows only " )
.toString();
}
输出的sql语句:
fetch first ? rows
网上有人说使用DB2Dialect方式性能比DB2400Dialect好,参考
http://www.blogjava.net/kelefa/archive/2007/08/27/90246.html,可我测试时却发现
使用DB2Dialect情况下CPU使用率一直会冲高,先记录个草稿,有时间再研究一下。
分享到:
相关推荐
DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL org.hibernate.dialect.PostgreSQLDialect MySQL ...
MYSQL常用命令 和SQL语句(方言dialect)
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
达梦数据库方言 (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-...
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
hibernate3.6.0dialect.jar
hibernate3dialect
我的sqlite dialect.java
最新达梦数7据库jar包&方言包,maven依赖jar包 DM达梦数据库jdbc-jar包dialect方言jar包
mybatis 框架关于mysql、oracle、db2等数据库的sql方言包。
Laravel开发-dialect 为雄辩的ORM提供JSON数据类型支持
hibernate下的kingbase的jar文件,需要的同学自行下载
国产达梦dialect方言jar包,本文亲自整理,没有坑
南大通用GBase数据库GBase_Hibernate3.2.3_GA-Dialect_8.3.81.51_build50.1.jar
hibernate 4以上Hibernate.INTEGER之类的不能使用了,之前使用的SQLiteDialect.java编译不过去了,这个可以。
2.2、打开此文件,将“<property name="hibernate.connection.url">jdbc:sqlite:D:/EGSDatabase.egsdata”一行中的数据库文件("D:/EGSDatabase.egsdata")修改为合适的数据库文件。 注:附件包含了...
thymeleaf-spring-data-dialect, 使用thymeleaf和 Spring Data 简化数据分页 Thymeleaf Spring Data 方言使用thymeleaf和 spring 数据简化数据分页。这是Thymeleaf的方言,它提供一些属性来创建分页和排序元素,...
hibernate-sqlite方言支持 hibernate.4版本
#hibernate.dialect org.hibernate.dialect.DB2Dialect #hibernate.connection.driver_class com.ibm.db2.jcc.DB2Driver #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver #hibernate.connection...