Java实现手写分页

1.实现类

public ResponseResult<List<AppDO>> page(AppPageQueryDto appPageQueryDto) {
    //开始页
    Integer currentPage = appPageQueryDto.getPageNum();
    //每页条数
    Integer pageSize = appPageQueryDto.getPageSize();
    //查询总条数
    int count = appMapper.count(appPageQueryDto);
    //计算总页数
    int totalPage = (count + pageSize - 1) / pageSize;
    /**
     * Pagination
     * 当前页码 pageNum
     * 分页大小 pageSize
     * 总数目 totalSize
     * 总页数 totalPage
     **/
    Pagination pagination = PaginationUtils.buildPagination(count, totalPage, currentPage, pageSize);
    List<AppDO> appDOList = Lists.newArrayList();
    if (count > 0) {
        appPageQueryDto.setStartRow((currentPage - 1) * pageSize);
        //查询sql LIMIT #{startRow}, #{pageSize}
        appDOList = appMapper.queryPage(appPageQueryDto);
    }
    return ResponseResult.newSuccessResponse(appDOList, pagination);
}

2.mapper


 /**
  * @Author kuli
  * @Date 2022/3/4
  * @Descriptio 查询总个数
  * @Param
  * @Return
  **/
int count(AppPageQueryDto appPageQueryDto);

 /**
  * @Author kuli
  * @Date 2022/3/3
  * @Description 分页查询接口
  * @Param
  * @Return
  **/
 List<AppDO> queryPage(AppPageQueryDto appPageQueryDto);

3.mapper.xml

<parameterMap id="appDOParam" type="com.sj.devops.cmdb.dao.model.AppDO"></parameterMap>
<parameterMap id="appPageParam" type="com.sj.devops.cmdb.dao.model.query.AppPageQueryDto"></parameterMap>

<select id="queryPage" resultMap="BaseResultMap" parameterMap="appPageParam">
    SELECT
    <include refid="BaseColumns"/>
    FROM cmdb_application
    <include refid="whereCondition"/>
    ORDER BY date_created DESC
    LIMIT #{startRow}, #{pageSize}
</select>

<select id="count" resultType="java.lang.Integer" parameterMap="appPageParam">
    SELECT
    count(1)
    FROM cmdb_application
    <include refid="whereCondition"/>
</select>

<sql id="whereCondition">
    <trim prefix="WHERE" prefixOverrides="AND|OR">
        <if test="code!=null and code != ''">
            AND code = #{code}
        </if>
    </trim>
</sql>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值