📄 limitsqlexecutor.java
字号:
package com.wxd.common.paging;
import org.apache.log4j.Logger;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.ibatis.sqlmap.engine.execution.SqlExecutor;
import com.ibatis.sqlmap.engine.mapping.statement.RowHandlerCallback;
import com.ibatis.sqlmap.engine.scope.RequestScope;
/**
* ��ҳ��ѯ����֧�� sql��ȡ��
* �ο�hibernate ʵ��
* @author <a href="mailto:zhuw@chinauip.com">zhuwei </a>
* @version 1.0
*/
public class LimitSqlExecutor extends SqlExecutor {
private String databaseName;
public static Logger log = Logger.getLogger(LimitSqlExecutor.class);
private Dialect dialect;
private boolean enableLimit = true;
private static Map dialectMap=new HashMap();
static {
dialectMap.put("db2", new DB2Dialect());
dialectMap.put("oracle", new OracleDialect());
dialectMap.put("mysql", new MySQLDialect());
dialectMap.put("hsql", new HSQLDialect());
dialectMap.put("sqlserver", new SQLServerDialect());
dialectMap.put("none", new NoneDialect());
}
public Dialect getDialect() {
return dialect;
}
public void setDialect(Dialect dialect) {
this.dialect = dialect;
}
public boolean isEnableLimit() {
return enableLimit;
}
public void setEnableLimit(boolean enableLimit) {
this.enableLimit = enableLimit;
}
public void executeQuery(RequestScope request, Connection conn, String sql,
Object[] parameters, int skipResults, int maxResults,
RowHandlerCallback callback) throws SQLException {
if ((skipResults != NO_SKIPPED_RESULTS || maxResults != NO_MAXIMUM_RESULTS)
&& supportsLimit()) {
sql = dialect.getLimitString(sql, skipResults, maxResults);
if(log.isDebugEnabled()){
log.debug(sql);
}
skipResults = NO_SKIPPED_RESULTS;
maxResults = NO_MAXIMUM_RESULTS;
}
super.executeQuery(request, conn, sql, parameters, skipResults,
maxResults, callback);
}
public boolean supportsLimit() {
if (enableLimit && dialect != null) {
return dialect.supportsLimit();
}
return false;
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
this.dialect=(Dialect)dialectMap.get(databaseName.toLowerCase());
if(this.dialect==null)
this.dialect=(Dialect)dialectMap.get("none");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -