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

最新文章

  1. Error : An error occurred while creating the WebJob schedule: Response status code does not indicate success: 409 (Conflict).
  2. AWVS漏洞测试-01节-AWVS的主要作用
  3. [Core Javascirpt] Basic Metaprogramming: Dynamic Method
  4. CLEAR REFRESH FEEE的区别
  5. 数字对 (长乐一中模拟赛day2T2)
  6. @Override在JDK1.5和JDK1.6中用法区别
  7. Spark 初级算子
  8. css中的hover ,关于li与a标签的问题
  9. Error creating bean with name &#39;contentCategoryController&#39;: Injection of autowired dependencies failed;
  10. h5的瀑布流
  11. 一位菜鸟的java 最基础笔记
  12. 影响 MySQL Server 性能的相关因素
  13. php curl 跨域情趣
  14. 279. Perfect Squares(动态规划)
  15. python课程安排
  16. NetStream 记录
  17. TemplateBinding和Binding的区别
  18. 正则表达式—RegEx(RegularExpressio)(二)
  19. DesignPattern(二) 创建型模式
  20. 洛谷 P2639 [USACO09OCT]Bessie的体重问题Bessie&#39;s We… 题解

热门文章

  1. gcd竞赛模板
  2. vue实现checked 全选功能
  3. 如何用好Go的测试黑科技
  4. Selenium的简单使用
  5. JS中字符串切片
  6. Java入门 - 面向对象 - 06.接口
  7. 关于C#程序的单元测试
  8. [DP][SA][可持久化线段树]黑红兔
  9. 优雅写Java之二(数组集合流)
  10. 基于 HTML5 WebGL 的虚拟现实可视化培训系统