pagehelper的使用和一些坑!

目录
  • 1.1 pagehelper介绍和使用
    • 1.1.1 springboot下使用
  • 2.1 总结

1.1 pagehelper介绍和使用

PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件。
原本以为分页插件,应该是很简单的,然而PageHelper比我想象的要复杂许多,它做的很强大,也很彻底,强大到使用者可能并不需要这么多功能,彻底到一参可以两用。

1.1.1 springboot下使用

  • 依赖包导入(这里划重点!!!有坑!!)

    com.github.pagehelper
    pagehelper
    最新版本

这是从官网上的标准形式,但是注意了。pagehelper与springboot集成的话,不能用这个包,这样会导致分页失效!

正确的是下面这种导入方式:

 
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.3
 

可以看到跟springboot集成的包大多数后面都是以spring-boot-starter结尾。。。。

刚开始我用的第一种,代码也全都正确,就是没有分页效果。。。这坑!!
pagehelper的使用和一些坑!_第1张图片

  • User
public class User {
    private Integer id;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", uid=" + uid +
                ", admin=" + admin +
                ", email='" + email + '\'' +
                ", phonenumber=" + phonenumber +
                ", classid=" + classid +
                '}';
    }

    private String name;

    private String password;

    private Integer uid;

    private Integer admin;

    private String email;

    private Integer phonenumber;

    private Integer classid;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public Integer getAdmin() {
        return admin;
    }

    public void setAdmin(Integer admin) {
        this.admin = admin;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email == null ? null : email.trim();
    }

    public Integer getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(Integer phonenumber) {
        this.phonenumber = phonenumber;
    }

    public Integer getClassid() {
        return classid;
    }

    public void setClassid(Integer classid) {
        this.classid = classid;
    }
}
  • UserMapper
@Repository
public interface UserMapper {
    long countByExample(UserExample example);

    int deleteByExample(UserExample example);

    int insert(User record);

    int insertSelective(User record);
    List selectAllUser();
    User selectByExample(UserExample example);
    User selectBynameANDpassword(String name,String password);

    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

    int updateByExample(@Param("record") User record, @Param("example") UserExample example);

}

这里只用selectAllUser()这个方法就行了!

  • UserMapper.xml

鄙人还是比较喜欢这种xml的方式声明sql,并不是觉得注解的不好,只是觉得这种方式使得代码的整体可读性更好!

  • controller
//测试分页信息
@RequestMapping("/UserInfo")
public String presentUser(Model model,
                                  @RequestParam(required = false,defaultValue="1",value="pageNum")Integer pageNum,
                                  @RequestParam(defaultValue="2",value="pageSize")Integer pageSize)throws  Exception {

    if(pageNum == null){
        pageNum = 1;   //设置默认当前页
    }
    if(pageNum <= 0){
        pageNum = 1;
    }
    if(pageSize == null){
        pageSize = 2;    //设置默认每页显示的数据数
    }
    System.out.println("当前页是:"+pageNum+"显示条数是:"+pageSize);
//1.引入分页插件,pageNum是第几页,pageSize是每页显示多少条,默认查询总数count
//2.紧跟的查询就是一个分页查询-必须紧跟.后面的其他查询不会被分页,除非再次调用PageHelper.startPage
    PageHelper.startPage(pageNum,pageSize);
    List userList =pageimpl.getAllUser();

        System.out.println("分页数据:"+userList);
        //3.使用PageInfo包装查询后的结果,5是连续 显示的条数,结果list类型是Page
        PageInfo pageInfo = new PageInfo(userList,pageSize);
        //4.使用model/map/modelandview等带回前端

        model.addAttribute("pageInfo",pageInfo);





return "bootstraptable";


}
  • 前端



    
    
    
    Hello, Bootstrap Table!

    
    
    


name password uid
[[${c.name}]] [[${c.password}]] [[${c.uid}]]

当前页号:
每页条数:
起始行号:
终止行号:
总结果数:
总页数:

是否为第一页:
是否为最后一页:
是否有前一页:
是否有下一页:
  • 效果

pagehelper的使用和一些坑!_第2张图片

2.1 总结

相比其他分页插件而言,pagehelper强大的很多。个人觉得用起来还是挺香的。
pagehelper的使用和一些坑!_第3张图片

你可能感兴趣的:(pagehelper的使用和一些坑!)