问题描述
在SpringMVC框架中使用PageHelper插件进行分页时,查询结果返回全部数据,分页未生效。
Controller中的代码
···
PageHelper.startPage(1, 10);
List<Map<String,Object>> list = userinfoMapper.queryAll(bean);
if(CollectionUtils.isEmpty(list)){
list = new ArrayList<>();
}
···
解决方案:
经过仔细排查后发现并非代码问题,由于配置文件是多数据源配置,其中一个数据源未引入PageHelper插件,导致分页不生效,添加上PageHelper配置之后分页生效。很坑,,
<!-- 创建SqlSessionFactory -->
<bean id="sqlSessionFactoryBack" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourceBack"/>
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
helperDialect=Oracle
reasonable=true <!-- 配置pageNum参数合理化,比如第0页,和超过最后一页,则返会第一页和最后一页。而不是意想不到的数据 -->
supportMethodsArguments=true <!-- 支持通过 Mapper 接口参数来传递分页参数”,通过interface传给mapper.xml,默认false不支持. -->
params=count=countSql <!-- 为了支持PageHelper.startPage(Object params)方法,默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero -->
autoRuntimeDialect=true <!-- 运行时多数据源(数据库)自动识别,默认值false。true则允许自动识别对应方言的分页. -->
</value>
</property>
</bean>
</array>
</property>
</bean>