后端笔记二 pagehelper的使用

PageHelper介绍:
pagehelper是mybatis 提供的分页插件,支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL数据库等等。

适用场景:

列表中搜索列表、上一页下一页、跳转到某一页、修改每页显示的条数等等........

使用实例
1、首先在pom文件中引入依赖
<!--pageHelper坐标-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>
2、如果响应数据要求返回一个总条数和当前页的数据集合,我们可以定义一个实体类PageBean
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean <T>{
    private Long total;//总条数
    private List<T> items;//当前页数据集合
}
3、在controller层中使用(参数中PageBean中的泛型是将来我们当前页的数据集合里面的每一条数据的类型是什么)

请求参数:

service层会返回一个PageBean对象

@GetMapping
    public Result<PageBean<Article>> list(
            Integer pageNum,Integer pageSize,
            @RequestParam(required = false) Integer categoryId,@RequestParam(required = false) String state
    ){
        PageBean pb = articleService.list(pageNum,pageSize,categoryId,state);

        return Result.success(pb);
    }
4、在serviceImpl中

1、创建PageBean对象

2、开启分页查询 使用pagehelper的startPage方法

3、调用mapper

    //条件分页列表查询
    @Override
    public PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {

        PageBean<Article> pb = new PageBean();

        PageHelper.startPage(pageNum,pageSize); //自动把pageNum和pageSize拼接到sql语句limit后面
        Map<String,Object> map = ThreadLocalUtil.get();
        Integer userId = (Integer) map.get("id"); //只能获取当前用户创建的文章列表
        List<Article> as =  articleMapper.list(userId,categoryId,state);
        //Page中提供了方法,可以获取PageHelper分页查询后 得到的总记录条数和当前页数据
        Page<Article> p = (Page<Article>) as;
        //把数据填充到我们的pageBean对象中
        pb.setTotal(p.getTotal());
        pb.setItems(p.getResult());
        return pb;
    }
5、mapper层
 //条件分页列表查询
    List<Article> list(Integer userId, Integer categoryId, String state);

因为前端传来的参数不是必须的,所以我们采用xml映射配置文件的方式

  <!--动态sql-->
    <select id="list" resultType="com.itheima.pojo.Article">
        select * from article
        <where>
            <if test="categoryId!=null">
                category_id=#{categoryId}
            </if>

            <if test="state!=null">
                and state=#{state}
            </if>

            and create_user=#{userId}
        </where>
    </select>
总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值