代码拉取完成,页面将自动刷新
分页的处理,都是通过PageHandler来完成的。
这部分借鉴了Mybatis-PageHelper的思路还有部分的代码。
接口定义如下:
public interface PageHandler {
/**
* 是否支持当前数据库的分页
*
* @param dialect
* @return
*/
boolean support(String dialect);
/**
* 根据查询语句获取count语句
*
* @param command
* @param dialect the dialect
* @return count command
*/
String getCountCommand(String command, String dialect);
/**
* 根据查询语句获取分页语句
*
* @param command the command
* @param pagination the pagination
* @param dialect the dialect
* @return page command
*/
String getPageCommand(String command, Pagination pagination, String dialect);
}
因为关系型数据库的count(*)
查询基本都是一样的,所以抽象类AbstractPageHandler
对getCountCommand
方法进行了实现,在扩展时只需要继承该抽象类即可。
下面以实现postgresql
的分页为例,实现代码如下:
public class PostgresqlPageHandler extends AbstractPageHandler {
@Override
public boolean support(String dialect) {
return StringUtils.indexOfIgnoreCase(dialect, "postgresql") != -1;
}
@Override
public String getPageCommand(String command, Pagination pagination, String dialect) {
StringBuilder pageSql = new StringBuilder(200);
pageSql.append(command);
pageSql.append(" limit ");
pageSql.append(pagination.getPageSize());
pageSql.append(" offset ");
pageSql.append(pagination.getBeginIndex());
return pageSql.toString();
}
}
非常的简单,然后将它配置到JdbcEngine
中即可使用:
<bean id="postgresqlPageHandler" class="com.sonsure.dumper.core.page.PostgresqlPageHandler"/>
<bean id="jdbcTemplateEngine" class="com.sonsure.dumper.springjdbc.config.JdbcTemplateEngineFactoryBean">
<!-- ... -->
<property name="pageHandler" ref="postgresqlPageHandler"/>
</bean>
也可以像下面这样配置到NegotiatingPageHandler
中,统一使用NegotiatingPageHandler
:
<bean id="postgresqlPageHandler" class="com.sonsure.dumper.core.page.PostgresqlPageHandler"/>
<bean id="mysqlPageHandler" class="com.sonsure.dumper.core.page.MysqlPageHandler"/>
<bean id="oraclePageHandler" class="com.sonsure.dumper.core.page.OraclePageHandler"/>
<bean id="negotiatingPageHandler" class="com.sonsure.dumper.core.page.NegotiatingPageHandler">
<property name="pageHandlers">
<list>
<ref bean="postgresqlPageHandler"/>
<ref bean="mysqlPageHandler"/>
<ref bean="oraclePageHandler"/>
</list>
</property>
</bean>
<bean id="jdbcTemplateEngine" class="com.sonsure.dumper.springjdbc.config.JdbcTemplateEngineFactoryBean">
<!-- ... -->
<property name="pageHandler" ref="negotiatingPageHandler"/>
</bean>
注意:MysqlPageHandler、OraclePageHandler、PostgresqlPageHandler默认已经实现并内置在NegotiatingPageHandler中,可以直接拿来用或使用NegotiatingPageHandler。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。