⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 limitsqlexecutor.java

📁 jsf+spring+ibatis 的一个程序,主要用来介绍JSF程序.
💻 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 + -