springboot使用pagehelper进行分页

springboot使用pagehelper进行分页

分页在日常工作中超级常用,使用limit n,i 分页较为麻烦,使用现成的框架pagehelper就很方便了.
首页:https://pagehelper.github.io/

pom依赖

一些mybatis和mysql的就不写了

		<!--pagehelp分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.7</version>
        </dependency>

主要的controller

注释写的比较详细,请看代码

@RestController
@Slf4j
public class UserController {

    @Autowired
    private UserDao userDao;

    @GetMapping("/get/{n}/{i}")
    public PageInfo<User> get(@PathVariable("n")Integer pageNo, @PathVariable("i")Integer pageSize) {
        //使用restful风格的方式接受参数.
        log.info("当前页码pageNo==="+pageNo+"````显示条数pageSize===="+pageSize);
        
        //将参数封装到Pagehelper,注意:当前设置只对下一个SQL语句生效,并且在mapper.xml中的SQL语句不要写分号.
        PageHelper.startPage(pageNo, pageSize);
        List<User> userList = userDao.getAllUser();
        
        //将返回的list封装成一个PageInfo<T>
        PageInfo<User> pageInfo = new PageInfo<>(userList);
        return pageInfo;
    }
}

dao层

和正常使用mybatis没有任何区别

public interface UserDao {
    List<User> getAllUser();
}

这里注意SQL语句不要写分号,会添加limit.

<mapper namespace="com.jd.dao.UserDao">
<select id="getAllUser" resultType="com.jd.domain.User">
    select * from t_user
</select>
</mapper>

配置信息

##数据库url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dev?serverTimezone=GMT%2B8
##数据库用户名
spring.datasource.username=root
##数据库密码
spring.datasource.password=112233
##数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
## 日志级别
logging.level.com.jd.dao.UserDao=debug
## 分页插件配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql

还有一种使用方法比较简洁

请看注释

这是controller层.
@RestController
public class UserController {

    @Resource
    private UserDao userDao;

    @GetMapping("/get/{n}/{i}")
    public PageInfo<User> get(@PathVariable("n")Integer pageNo, @PathVariable("i")Integer pageSize) {

        //将参数封装到Pagehelper,注意:当前设置只对下一个SQL语句生效,并且在mapper.xml中的SQL语句不要写分号.
        //Page<Object> objects = PageHelper.startPage(pageNo, pageSize);

        //也可以显示的传递分页信息,但是在dao层中就只能使用pageNum和pageSize这两个固定的参数名
        Page<User> userList = userDao.getAllUser(pageNo,pageSize);
        System.out.println("1111"+userList.toString());

        //将返回的list封装成一个PageInfo<T>
        PageInfo<User> pageInfo = new PageInfo<>(userList);

        //这个SQL就不会分页.
        //Page<User> userList2 = userDao.getAllUser();
        //System.out.println("22222"+userList2);

        return pageInfo;
    }
}
这是dao层
public interface UserDao {
	//只能使用固定的参数名,才能识别
    Page<User> getAllUser(int pageNum,int pageSize);
}

测试

返回的信息中包含信息:
在这里插入图片描述
在pageInfo中的信息:

	//当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;
 
    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"
 
    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;
 
    //前一页
    private int prePage;
    //下一页
    private int nextPage;
 
    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
    //导航条上的第一页
    private int navigateFirstPage;
    //导航条上的最后一页
    private int navigateLastPage;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值