Mybatis 实现分页查询的最简单方法

2022-08-29 11:17:36

作为企业开发新人,在学习过程中学习mybatis 的基础非常不牢,毕竟mybatis plus简直太方便啦~

但是你早晚会遇见mybatis plus满足不了的情况,或者不好实现的情况。

这时为了满足分页查询的方法,我总结了最简单的方法。

第一步:定义page

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;        

        // 如果从requestBody中获取的pageindex为null,则pageIndex=1。
        Integer pageIndex = OptionalUtils.getDefaultValue(apiCallTotalModel.getPageIndex(), 1);
        // 如果从requestBody中获取的pageSize为null,则pageSize=10。
        Integer pageSize =OptionalUtils.getDefaultValue(apiCallTotalModel.getPageSize(), 10);
        IPage<ApiCallTotalEntity> page = new Page<>(pageIndex,pageSize);

第二步:定义接口

    Page<ApiCallTotalEntity> queryByApiCode(@Param("apiCode") String apiCode,
                                            @Param("page") IPage<ApiCallTotalEntity> page);

第三步:编写SQL语句

    <select id="queryByApiCode" resultMap="BaseResultMap">
        SELECT t.api_code,
        t.app_code,
        SUM(t.success_num) AS success_num,
        SUM(t.failure_num) AS failure_num,
        SUM(t.success_total_time) AS success_total_time
        FROM ds_api_call_total t
        <where>
            <if test="apiCode != null and apiCode != ''">
                t.api_code = #{apiCode}
            </if>
        </where>
        GROUP BY t.api_code
    </select>

第四步:调用mapper,执行方法

        Page<ApiCallTotalEntity> pageEntity = apiCallTotalMapper.queryByApiCode(apiCode, page);
        List<ApiCallTotalEntity> apiCallTotalEntities = pageEntity.getRecords();

第五步:完成!

是不是很简单,不需要在sql里写 limit 设置分页的大小。

 而且page的设置 可以由前端控制。

如果本篇文章对你有所帮助,还请一键三连【开心】

  • 作者:YOUNG.K
  • 原文链接:https://blog.csdn.net/weixin_45848260/article/details/125604957
    更新时间:2022-08-29 11:17:36