Search in sources :

Example 1 with Page

use of com.jfinal.plugin.activerecord.Page in project jfinal by jfinal.

the class AnsiSqlDialect method takeOverModelPaginate.

@SuppressWarnings({ "rawtypes", "unchecked" })
public Page<? extends Model> takeOverModelPaginate(Connection conn, Class<? extends Model> modelClass, int pageNumber, int pageSize, Boolean isGroupBySql, String select, String sqlExceptSelect, Object... paras) throws Exception {
    String totalRowSql = "select count(*) " + replaceOrderBy(sqlExceptSelect);
    List result = CPI.query(conn, totalRowSql, paras);
    int size = result.size();
    if (isGroupBySql == null) {
        isGroupBySql = size > 1;
    }
    long totalRow;
    if (isGroupBySql) {
        totalRow = size;
    } else {
        totalRow = (size > 0) ? ((Number) result.get(0)).longValue() : 0;
    }
    if (totalRow == 0) {
        // totalRow = 0;
        return new Page(new ArrayList(0), pageNumber, pageSize, 0, 0);
    }
    int totalPage = (int) (totalRow / pageSize);
    if (totalRow % pageSize != 0) {
        totalPage++;
    }
    if (pageNumber > totalPage) {
        return new Page(new ArrayList(0), pageNumber, pageSize, totalPage, (int) totalRow);
    }
    // --------
    StringBuilder sql = new StringBuilder();
    sql.append(select).append(" ").append(sqlExceptSelect);
    PreparedStatement pst = conn.prepareStatement(sql.toString(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    for (int i = 0; i < paras.length; i++) {
        pst.setObject(i + 1, paras[i]);
    }
    ResultSet rs = pst.executeQuery();
    // move the cursor to the start
    int offset = pageSize * (pageNumber - 1);
    for (int i = 0; i < offset; i++) {
        if (!rs.next()) {
            break;
        }
    }
    List list = buildModel(rs, modelClass, pageSize);
    if (rs != null)
        rs.close();
    if (pst != null)
        pst.close();
    return new Page(list, pageNumber, pageSize, totalPage, (int) totalRow);
}
Also used : ArrayList(java.util.ArrayList) ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) List(java.util.List) Page(com.jfinal.plugin.activerecord.Page) PreparedStatement(java.sql.PreparedStatement)

Example 2 with Page

use of com.jfinal.plugin.activerecord.Page in project jfinal by jfinal.

the class AnsiSqlDialect method takeOverDbPaginate.

@SuppressWarnings("rawtypes")
public Page<Record> takeOverDbPaginate(Connection conn, int pageNumber, int pageSize, Boolean isGroupBySql, String select, String sqlExceptSelect, Object... paras) throws SQLException {
    String totalRowSql = "select count(*) " + replaceOrderBy(sqlExceptSelect);
    List result = CPI.query(conn, totalRowSql, paras);
    int size = result.size();
    if (isGroupBySql == null) {
        isGroupBySql = size > 1;
    }
    long totalRow;
    if (isGroupBySql) {
        totalRow = size;
    } else {
        totalRow = (size > 0) ? ((Number) result.get(0)).longValue() : 0;
    }
    if (totalRow == 0) {
        return new Page<Record>(new ArrayList<Record>(0), pageNumber, pageSize, 0, 0);
    }
    int totalPage = (int) (totalRow / pageSize);
    if (totalRow % pageSize != 0) {
        totalPage++;
    }
    if (pageNumber > totalPage) {
        return new Page<Record>(new ArrayList<Record>(0), pageNumber, pageSize, totalPage, (int) totalRow);
    }
    StringBuilder sql = new StringBuilder();
    sql.append(select).append(" ").append(sqlExceptSelect);
    PreparedStatement pst = conn.prepareStatement(sql.toString(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    for (int i = 0; i < paras.length; i++) {
        pst.setObject(i + 1, paras[i]);
    }
    ResultSet rs = pst.executeQuery();
    // move the cursor to the start
    int offset = pageSize * (pageNumber - 1);
    for (int i = 0; i < offset; i++) {
        if (!rs.next()) {
            break;
        }
    }
    List<Record> list = buildRecord(rs, pageSize);
    if (rs != null)
        rs.close();
    if (pst != null)
        pst.close();
    return new Page<Record>(list, pageNumber, pageSize, totalPage, (int) totalRow);
}
Also used : ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) List(java.util.List) Page(com.jfinal.plugin.activerecord.Page) Record(com.jfinal.plugin.activerecord.Record) PreparedStatement(java.sql.PreparedStatement)

Example 3 with Page

use of com.jfinal.plugin.activerecord.Page in project jfinal by jfinal.

the class AnsiSqlDialect method takeOverDbPaginate.

@SuppressWarnings("rawtypes")
public Page<Record> takeOverDbPaginate(Connection conn, int pageNumber, int pageSize, Boolean isGroupBySql, String totalRowSql, StringBuilder findSql, Object... paras) throws SQLException {
    // String totalRowSql = "select count(*) " + replaceOrderBy(sqlExceptSelect);
    List result = CPI.query(conn, totalRowSql, paras);
    int size = result.size();
    if (isGroupBySql == null) {
        isGroupBySql = size > 1;
    }
    long totalRow;
    if (isGroupBySql) {
        totalRow = size;
    } else {
        totalRow = (size > 0) ? ((Number) result.get(0)).longValue() : 0;
    }
    if (totalRow == 0) {
        return new Page<Record>(new ArrayList<Record>(0), pageNumber, pageSize, 0, 0);
    }
    int totalPage = (int) (totalRow / pageSize);
    if (totalRow % pageSize != 0) {
        totalPage++;
    }
    if (pageNumber > totalPage) {
        return new Page<Record>(new ArrayList<Record>(0), pageNumber, pageSize, totalPage, (int) totalRow);
    }
    // StringBuilder sql = new StringBuilder();
    // sql.append(select).append(" ").append(sqlExceptSelect);
    PreparedStatement pst = conn.prepareStatement(findSql.toString(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    for (int i = 0; i < paras.length; i++) {
        pst.setObject(i + 1, paras[i]);
    }
    ResultSet rs = pst.executeQuery();
    // move the cursor to the start
    int offset = pageSize * (pageNumber - 1);
    for (int i = 0; i < offset; i++) {
        if (!rs.next()) {
            break;
        }
    }
    List<Record> list = buildRecord(rs, pageSize);
    if (rs != null)
        rs.close();
    if (pst != null)
        pst.close();
    return new Page<Record>(list, pageNumber, pageSize, totalPage, (int) totalRow);
}
Also used : ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) List(java.util.List) Page(com.jfinal.plugin.activerecord.Page) Record(com.jfinal.plugin.activerecord.Record) PreparedStatement(java.sql.PreparedStatement)

Example 4 with Page

use of com.jfinal.plugin.activerecord.Page in project jfinal by jfinal.

the class AnsiSqlDialect method takeOverModelPaginate.

@SuppressWarnings({ "rawtypes", "unchecked" })
public Page<? extends Model> takeOverModelPaginate(Connection conn, Class<? extends Model> modelClass, int pageNumber, int pageSize, Boolean isGroupBySql, String totalRowSql, StringBuilder findSql, Object... paras) throws Exception {
    // String totalRowSql = "select count(*) " + replaceOrderBy(sqlExceptSelect);
    List result = CPI.query(conn, totalRowSql, paras);
    int size = result.size();
    if (isGroupBySql == null) {
        isGroupBySql = size > 1;
    }
    long totalRow;
    if (isGroupBySql) {
        totalRow = size;
    } else {
        totalRow = (size > 0) ? ((Number) result.get(0)).longValue() : 0;
    }
    if (totalRow == 0) {
        // totalRow = 0;
        return new Page(new ArrayList(0), pageNumber, pageSize, 0, 0);
    }
    int totalPage = (int) (totalRow / pageSize);
    if (totalRow % pageSize != 0) {
        totalPage++;
    }
    if (pageNumber > totalPage) {
        return new Page(new ArrayList(0), pageNumber, pageSize, totalPage, (int) totalRow);
    }
    // --------
    // StringBuilder sql = new StringBuilder();
    // sql.append(select).append(" ").append(sqlExceptSelect);
    PreparedStatement pst = conn.prepareStatement(findSql.toString(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    for (int i = 0; i < paras.length; i++) {
        pst.setObject(i + 1, paras[i]);
    }
    ResultSet rs = pst.executeQuery();
    // move the cursor to the start
    int offset = pageSize * (pageNumber - 1);
    for (int i = 0; i < offset; i++) {
        if (!rs.next()) {
            break;
        }
    }
    List list = buildModel(rs, modelClass, pageSize);
    if (rs != null)
        rs.close();
    if (pst != null)
        pst.close();
    return new Page(list, pageNumber, pageSize, totalPage, (int) totalRow);
}
Also used : ArrayList(java.util.ArrayList) ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) List(java.util.List) Page(com.jfinal.plugin.activerecord.Page) PreparedStatement(java.sql.PreparedStatement)

Aggregations

Page (com.jfinal.plugin.activerecord.Page)4 PreparedStatement (java.sql.PreparedStatement)4 ResultSet (java.sql.ResultSet)4 ArrayList (java.util.ArrayList)4 List (java.util.List)4 Record (com.jfinal.plugin.activerecord.Record)2