pers.clare.hisql.service.SQLStorePageService Maven / Gradle / Ivy
The newest version!
package pers.clare.hisql.service;
import pers.clare.hisql.exception.HiSqlException;
import pers.clare.hisql.page.Page;
import pers.clare.hisql.page.Pagination;
import pers.clare.hisql.page.Sort;
import pers.clare.hisql.store.SQLCrudStore;
import pers.clare.hisql.store.SQLStore;
import pers.clare.hisql.util.ConnectionUtil;
import pers.clare.hisql.util.ResultSetUtil;
import java.sql.Connection;
import java.util.List;
public abstract class SQLStorePageService extends SQLStoreNextService {
public Page page(
SQLStore sqlStore
, String sql
, Pagination pagination
, Object... parameters
) {
return doPage(sqlStore, sql, pagination, parameters);
}
public Page page(
SQLStore sqlStore
, String sql
, Sort sort
, Object... parameters
) {
return doPage(sqlStore, sql, toPagination(sort), parameters);
}
public Page page(
SQLCrudStore sqlStore
, Pagination pagination
, Object... parameters
) {
return doPage(sqlStore, sqlStore.getSelect(), pagination, parameters);
}
public Page doPage(
SQLStore sqlStore
, String sql
, Pagination pagination
, Object... parameters
) {
pagination = getPagination(pagination);
if (pagination.getSize() == 0) return Page.empty(pagination);
String executeSql = buildPaginationSQL(pagination, sql);
Connection connection = null;
try {
connection = getConnection();
List list = ResultSetUtil.toInstances(ConnectionUtil.query(connection, executeSql, parameters), sqlStore);
return toPage(pagination, list, connection, sql, parameters);
} catch (HiSqlException e) {
throw e;
} catch (Exception e) {
throw new HiSqlException(e);
} finally {
closeConnection(connection);
}
}
}