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实现的表格分页

SpringBoot 整合PageHelper分页 ,超过最大页数时一直返回最后一页的数据

Spring AOP 实现PageHelper自动分页

Mybatis分页插件PageHelper实现分页查询

PageHelper 分页一直有性能问题?

springboot + mybatis-pagehelper 参数查询不分页的bug。。。