All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sf.database.jdbc.handle.PageListHandler Maven / Gradle / Ivy

The newest version!
package sf.database.jdbc.handle;

import sf.database.jdbc.rowmapper.RowMapper;
import sf.database.jdbc.sql.ResultSetCallback;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 假分页
 * @param 
 */
public class PageListHandler implements ResultSetCallback> {

    private RowMapper mapper;
    private int first;
    private int max;

    public PageListHandler(RowMapper mapper) {
        this.mapper = mapper;
    }

    @Override
    public List callback(ResultSet rs) throws SQLException {
        if (first > 1) {
            int i = 1;
            //sqlite不支持rs.absolute(first - 1);滚动结果集.
            boolean succ = false;
            while (i < first) {
                succ = rs.next();
                if (!succ) {
                    break;
                }
                i++;
            }
            if (!succ) {
                return Collections.emptyList();
            }
        }

        List rows = new ArrayList();
        int count = 0;
        ResultSetMetaData rsmd = rs.getMetaData();
        while (rs.next()) {
            rows.add(mapper.handle(rs, rsmd, count++));
            if (max > 0 && rows.size() >= max) {
                break;
            }
        }
        return rows;
    }

    public void setFirstResult(int first) {
        this.first = first;
    }

    public void setMaxResults(int max) {
        this.max = max;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy