17-SSM中通过pagehelper分页的实现
Posted rqy0526
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17-SSM中通过pagehelper分页的实现相关的知识,希望对你有一定的参考价值。
SSM中通过pagehelper分页的实现
1. 在SSM框架的基础上实现,导包
<!-- 分页 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
2. application.xml的配置,在sqlSessionFactory的Bean标签中加入下面的属性
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
<!-- helperDialect:有别于3.0+版本,现在必须是helperDialect,否则spring启动加载时会报错 -->
helperDialect=mysql
</value>
</property>
</bean>
</array>
</property>
2.1 如果你是纯javaconfig配置的SSM框架,你应该在SpringConfig下面这样配置plugins,代替第二步
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource)
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
//分页 以下
PageInterceptor pageInterceptor = new PageInterceptor();
//创建插件需要的参数集合
Properties properties = new Properties();
//配置数据库方言 为oracle
properties.setProperty("helperDialect", "mysql");
//配置分页的合理化数据
properties.setProperty("reasonable", "true");
pageInterceptor.setProperties(properties);
//将拦截器设置到sqlSessionFactroy中
sqlSessionFactoryBean.setPlugins(new Interceptor[] pageInterceptor);
//以上
return sqlSessionFactoryBean;
3. 编写service层,CustomService代码如下:
public interface CustomService
List<Custom> findAllCustom(int page,int rows);
4. CustomServiceImpl代码如下:
@Service
public class CustomServiceImpl implements CustomService
@Autowired
CustomMapper customMapper;
/**
* page 开始页数
* rows 每页显示的数据条数
*/
@Override
public List<Custom> findAllCustom(int page,int rows)
//将参数传给方法实现分页
PageHelper.startPage(page, rows);
CustomExample example = new CustomExample();
List<Custom> customs = customMapper.selectByExample(example);
return customs;
5. 编写web层,CustomController代码如下:
@Controller
@RequestMapping("custom")
public class CustomController
@Autowired
CustomService customService;
@RequestMapping("list")
@ResponseBody
public PageBean<Custom> list(int page,int rows)
List<Custom> customs = customService.findAllCustom( page,rows);
//查询到的数据给到PageInfo ,只需要把结果集给到该对象,获取分页信息
// 就可以通过该对象get方法拿到总页数,总记录数,等等你想要的数据
PageInfo<Custom> pageInfo=new PageInfo<>(customs);
//根据前台需要在自定义一个分页对象
//我的本次项目只需要传入页面需要的list集合,和total,同时json形式返回
PageBean<Custom> pageBean=new PageBean<>(customs,pageInfo.getTotal());
//把该对象json返回
return pageBean;
6. PageBean<T>创建
public class PageBean<T>
private List<T> rows;
private long total;
public PageBean(List<T> rows, long total)
this.rows = rows;
this.total = total;
public PageBean()
public List<T> getRows()
return rows;
public void setRows(List<T> rows)
this.rows = rows;
public long getTotal()
return total;
public void setTotal(long total)
this.total = total;
7. 测试
http://localhost/custom/list?rows=30&page=1
以上是关于17-SSM中通过pagehelper分页的实现的主要内容,如果未能解决你的问题,请参考以下文章
Vue2.0+ElementUI+PageHelper实现的表格分页