Springboot整合pagehelper

1导入相关的pom依赖

   <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.3</version>
    </dependency>

配置application.yml文件

#pagehelper分页插件配置
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

#显示日志
logging:
  level:
    com.javaxl.springboot02.mapper: debug

相关代码

注释

	@EnableTransactionManagement
	@EnableAspectJAutoProxy

这两个注解替代了sping-mybaits中的sessionractory添加pagehelper拦截器,一定记得开动态代理

将上面两个注释加到入口的Springboot02Application 启动类中,如下代码

	package com.ybz.springboot02;
	
	import org.mybatis.spring.annotation.MapperScan;
	import org.springframework.boot.SpringApplication;
	import org.springframework.boot.autoconfigure.SpringBootApplication;
	import org.springframework.context.annotation.EnableAspectJAutoProxy;
	import org.springframework.transaction.annotation.EnableTransactionManagement;
	
	@MapperScan("com.ybz.springboot02.mapper")
	@EnableTransactionManagement
	@EnableAspectJAutoProxy
	@SpringBootApplication
	public class Springboot02Application {
	
	    public static void main(String[] args) {
	        SpringApplication.run(Springboot02Application.class, args);
	    }
	
	}

创建一个切面类PagerAspect

PagerAspect.java

	@Component
	@Aspect
	public class PagerAspect {
	
	    @Around("execution(* *..*Service.*Pager(..))")
	    public Object invoke(ProceedingJoinPoint args) throws Throwable{
	        Object[] params = args.getArgs();
	        PageBean pageBean = null;
	        for (Object param : params) {
	            if(param instanceof PageBean){
	                pageBean = (PageBean) param;
	                break;
	            }
	        }
	
	        if (pageBean !=null && pageBean.isPagination())
	        PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
	
	        Object proceed = args.proceed(params);
	
	        if (pageBean !=null && pageBean.isPagination()){
	            PageInfo pageInfo = new PageInfo((List)proceed);
	            pageBean.setTotal(pageInfo.getTotal()+"");
	        }
	        return proceed;
	    }
	}

工具类分页的PageBean类

PageBean.java

	package com.zking.pagination.entity;
	
	import java.io.Serializable;
	import java.util.Map;
	
	import javax.servlet.http.HttpServletRequest;
	
	public class PageBean implements Serializable {
	
		private static final long serialVersionUID = 2422581023658455731L;
	
		//页码
		private int page=1;
		//每页显示记录数
		private int rows=10;
		//总记录数
		private int total=0;
		//是否分页
		private boolean isPagination=true;
		//上一次的请求路径
		private String url;
		//获取所有的请求参数
		private Map<String,String[]> map;
		
		public PageBean() {
			super();
		}
		
		//设置请求参数
		public void setRequest(HttpServletRequest req) {
			String page=req.getParameter("page");
			String rows=req.getParameter("rows");
			String pagination=req.getParameter("pagination");
			this.setPage(page);
			this.setRows(rows);
			this.setPagination(pagination);
			this.url=req.getContextPath()+req.getServletPath();
			this.map=req.getParameterMap();
		}
		public String getUrl() {
			return url;
		}
	
		public void setUrl(String url) {
			this.url = url;
		}
	
		public Map<String, String[]> getMap() {
			return map;
		}
	
		public void setMap(Map<String, String[]> map) {
			this.map = map;
		}
	
		public int getPage() {
			return page;
		}
	
		public void setPage(int page) {
			this.page = page;
		}
		
		public void setPage(String page) {
			if(null!=page&&!"".equals(page.trim()))
				this.page = Integer.parseInt(page);
		}
	
		public int getRows() {
			return rows;
		}
	
		public void setRows(int rows) {
			this.rows = rows;
		}
		
		public void setRows(String rows) {
			if(null!=rows&&!"".equals(rows.trim()))
				this.rows = Integer.parseInt(rows);
		}
	
		public int getTotal() {
			return total;
		}
	
		public void setTotal(int total) {
			this.total = total;
		}
		
		public void setTotal(String total) {
			this.total = Integer.parseInt(total);
		}
	
		public boolean isPagination() {
			return isPagination;
		}
		
		public void setPagination(boolean isPagination) {
			this.isPagination = isPagination;
		}
		
		public void setPagination(String isPagination) {
			if(null!=isPagination&&!"".equals(isPagination.trim()))
				this.isPagination = Boolean.parseBoolean(isPagination);
		}
		
		/**
		 * 获取分页起始标记位置
		 * @return
		 */
		public int getStartIndex() {
			//(当前页码-1)*显示记录数
			return (this.getPage()-1)*this.rows;
		}
		
		/**
		 * 末页
		 * @return
		 */
		public int getMaxPage() {
			int totalpage=this.total/this.rows;
			if(this.total%this.rows!=0)
				totalpage++;
			return totalpage;
		}
		
		/**
		 * 下一页
		 * @return
		 */
		public int getNextPage() {
			int nextPage=this.page+1;
			if(this.page>=this.getMaxPage())
				nextPage=this.getMaxPage();
			return nextPage;
		}
		
		/**
		 * 上一页
		 * @return
		 */
		public int getPreivousPage() {
			int previousPage=this.page-1;
			if(previousPage<1)
				previousPage=1;
			return previousPage;
		}
	
		@Override
		public String toString() {
			return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination
					+ "]";
		}
	}

测试

代码

UserMapper.java中添加一个方法

	List<User> listPager(User user);

UserMapper.xml

	 <select id="listPager" resultType="com.ybz.springboot02.entity.User" parameterType="com.ybz.springboot02.entity.User">
	    select
	    <include refid="Base_Column_List" />
	    from user
	    <where>
	      <if test="account != null and account !=''">
	        account like #{account}
	      </if>
	    </where>
	
	  </select>

UserService.java

 List<User> listPager(User user, PageBean pageBean);

UserServiceimpl.java

		 @Autowired
    private UserMapper userMapper;

	  @Override
	    public List<User> listPager(User user, PageBean pageBean) {
	        return userMapper.listPager(user);
	    }

UserServiceimplTest.java

	  @Test
	    void listPager() {
	        User user=new User();
	        user.setAccount("a");
	        PageBean p=new PageBean();
	        for (User user1 : this.userService.listPager(user, p)) {
	            System.out.println(user1);
	        }
	    }

效果图

我这里数据库只有一条数据

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值