PageHelder分页(Mybatis-plus)

前言:

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

 

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

分类:

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

参数:

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

 

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

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

 

 

PageHelder项目中使用(Spring项目)

1:来一张简单的表

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

 <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.0.0</version>
    </dependency>

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

 <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:com/bruceliu/mapper/*.xml"/>
        <!--给实体类取别名-->
        <property name="typeAliasesPackage" value="com.bruceliu.pojo"/>

        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <value>
                            helperDialect=mysql
                            <!--分页合理化参数,设置为true时,pageNum<=0时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。-->
                            reasonable=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

 4:创建实体类

public class User {
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

5:UserMapper.java

public interface UserMapper{

    //查询所有
    public List<User> getAll();
    
}

6:UserMapper.xml

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bruceliu.mapper.UserMapper">

    <select id="getAll" resultType="com.project.pojo.User">
        SELECT * from t_user
    </select>

</mapper>

7:UserService.java

public interface UserService {

    public List<User> getAll();


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

8:UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;


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

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

9:数据测试:UserServiceImplTest.java

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

    @Autowired
    private UserService userService;

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

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

10:运行findByPage得到结果

 

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

 



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



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章