自定义List分页工具

package com.top.project.assignment.controller.statistics.common;

import java.util.List;

/**
 * 自定义List分页工具
 * @author hanwl
 */
public class PageUtil {

    /**
     * 开始分页
     * @param list
     * @param pageNum 页码
     * @param pageSize 每页多少条数据
     * @return
     */
    public static List startPage(List list, Integer pageNum,
            Integer pageSize) {
        if (list == null) {
            return null;
        }
        if (list.size() == 0) {
            return null;
        }

        Integer count = list.size(); // 记录总数
        Integer pageCount = 0; // 页数
        if (count % pageSize == 0) {
            pageCount = count / pageSize;
        } else {
            pageCount = count / pageSize + 1;
        }

        int fromIndex = 0; // 开始索引
        int toIndex = 0; // 结束索引

        if (pageNum != pageCount) {
            fromIndex = (pageNum - 1) * pageSize;
            toIndex = fromIndex + pageSize;
        } else {
            fromIndex = (pageNum - 1) * pageSize;
            toIndex = count;
        }

        List pageList = list.subList(fromIndex, toIndex);

        return pageList;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在MyBatis中,自定义分页查询的Mapper可以通过以下步骤实现: 1. 在Mapper.xml文件中定义自定义分页查询的SQL语句,例如: ``` <select id="findUsers" resultType="com.example.User"> SELECT * FROM users LIMIT #{start}, #{pageSize} </select> ``` 其中,#{start}和#{pageSize}是动态参数,分别表示查询起始位置和每页记录数。 2. 在Mapper接口中定义对应方法,例如: ``` public interface UserMapper { List<User> findUsers(@Param("start") int start, @Param("pageSize") int pageSize); } ``` 其中,@Param注解用于将方法参数与SQL语句中的动态参数对应。 3. 编写分页查询的工具类,例如: ``` public class PageUtils<T> { private int currentPage; private int pageSize; private int total; private List<T> data; // getters and setters public PageUtils(int currentPage, int pageSize, int total, List<T> data) { this.currentPage = currentPage; this.pageSize = pageSize; this.total = total; this.data = data; } public static <T> PageUtils<T> getPage(int currentPage, int pageSize, List<T> data) { int total = data.size(); int fromIndex = (currentPage - 1) * pageSize; int toIndex = fromIndex + pageSize; if (toIndex > total) { toIndex = total; } List<T> pageData = data.subList(fromIndex, toIndex); return new PageUtils<>(currentPage, pageSize, total, pageData); } } ``` 其中,currentPage表示当前页码,pageSize表示每页记录数,total表示总记录数,data表示查询结果。 4. 在Service层调用Mapper接口中的方法,获取查询结果并进行分页处理,例如: ``` @Autowired private UserMapper userMapper; public PageUtils<User> findUsers(int currentPage, int pageSize) { List<User> data = userMapper.findUsers((currentPage - 1) * pageSize, pageSize); return PageUtils.getPage(currentPage, pageSize, data); } ``` 以上就是自定义分页查询的Mapper的实现步骤,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一城烟雨lxf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值