PageHelder分页(Mybatis-plus)

前言:

  • 如果我们想对数据进行分页的话,手动编写分页会比较的麻烦,会让数据库语句变得比较的复杂
  • 之前写过一篇博客是关于传统的数据库分页展示的源码,感兴趣的小伙伴可以点击链接查看:Java后端实现分页效果

源码下载地址:https://github.com/Jobnumber/PageHelder-H


敲代码之前,我们需要先对从三方面对分页的原理进行了解

分类:

  1. 内存分页指的是从数据库中一次性的查询出数据,然后根据需求的不同再从内存当中获取(优点:减少了与数据库的交互,缺点:分页效率低,对内存的开销比较多)
  2. 物理分页每次只从数据库中查询一页的数据(优势:效率比较高,节省内存空间,缺点:不同数据库有不同的做法)

参数:

  1. 当前页
  2. 每页的显示条数
  3. 总记录数

MySQL分页语句关键(select * from t_user limit 0,10):

  1. 开始记录的索引:当前页*每一页需要显示的条数
  2. 总页数:数据库总的记录数%总条数==0?数据库总的记录数%总条数:+1                                                                                               //数据库总的记录数除以总条数,如果刚好就得到页数,否则再加一页

 


PageHelder项目中使用(Spring项目)

看一下项目的整体文件(idea需要安装有lombok插件,没有的可以手写get/set)

PageHelder分页(Mybatis-plus)_第1张图片

1:来一张简单的表

PageHelder分页(Mybatis-plus)_第2张图片

2:首先先导入jar包,这里使用Maven托管,引入pom文件

 
      com.github.pagehelper
      pagehelper
      4.0.0
 

3:在 Spring 配置文件中配置拦截器插件





    
    





    
    
    
    



    
    
    
    


    
        
            
                
                    
                        helperDialect=mysql
                        
                        reasonable=true
                    
                
            
        
    





    





    



    
        
        
    



    

 4:创建实体类

package com.pageHelder.domain;

import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
    private int age;

}

5:UserMapper.java

package com.pageHelder.dao;

import com.pageHelder.domain.User;
import org.springframework.stereotype.Repository;

import java.util.List;


public interface UserMapper{

    //查询所有
    public List getAll();

}

6:UserMapper.xml




    

7:UserService.java

package com.pageHelder.service;

import com.github.pagehelper.PageInfo;
import com.pageHelder.domain.User;

import java.util.List;

public interface UserService {

    public List getAll();

    /*分页查询
     *返回PageHelper提供的封装分页参数的PageInfo对象
     */
    PageInfo findByPage(int pageNum, int pageSize);
}

8:UserServiceImpl.java

package com.pageHelder.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pageHelder.domain.User;
import com.pageHelder.dao.UserMapper;
import com.pageHelder.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List getAll() {
        List user=userMapper.getAll();
        return user;
    }

    @Override
    public PageInfo findByPage(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        Listlist=userMapper.getAll();
        PageInfopageInfo=new PageInfo<>(list);
        //TODO   因为先进行测试,所以加入打印输出语句,方便测试查看
        for(User user:list){
            System.out.println("user = " + user);
        }
        return pageInfo;
    }
}

9:数据测试:UserServiceImplTest.java

package com.pageHelder.service.impl;

import com.github.pagehelper.PageInfo;
import com.pageHelder.domain.User;
import com.pageHelder.service.UserService;
import org.junit.Assert;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class UserServiceImplTest {

    @Autowired
    private UserService userService;

    @Test
    public void getAll() {
        List users=userService.getAll();
        Assert.assertNotNull(users);
        System.out.println("users = " + users);
    }

    @Test
    public void findByPage() {
        userService.findByPage(1, 10);


    }
}

10:运行findByPage得到结果

PageHelder分页(Mybatis-plus)_第3张图片

PageHelder的官方使用方法:github官网地址

 



原创文章,未经允许禁止盗用



 

你可能感兴趣的:(Mybatis,PageHelder,Spring,MyBatis-plus,MyBatis,分页)