Mybatis分页查询
参考网址:
https://blog.csdn.net/baidu_30670015/article/details/84636533
package org.ggj.nms.util; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; import org.ggj.nms.base.vo.PageInfoView; import java.math.BigDecimal; import java.util.List; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; public class PagerUtils { /** * 数据库查询分页 * * @param pageNum 页数 * @param pageSize 每页大小 * @param function mybastis查询语句 * @param <T> 实际mybastis的返回结果 * @return 返回PageInfo */ public static <T> PageInfoView<T> get(int pageNum, int pageSize, Supplier<List<T>> function) { PageInfo<T> page = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(function::get); return copyToPageView(page, page.getList()); } /** * 数据库查询分页 * * * @param function mybastis查询语句 * @param <T> 实际mybastis的返回结果 * @return 返回PageInfo */ public static <T> PageInfoView<T> get(PageInfoView pageInfoView, Supplier<List<T>> function) { if(StringUtils.isNotBlank(pageInfoView.getSort())&&StringUtils.isNotBlank(pageInfoView.getOrder())){ PageHelper.orderBy(pageInfoView.getSort()+" "+pageInfoView.getOrder()); } PageInfo<T> page = PageHelper.startPage(pageInfoView.getPageNum(), pageInfoView.getPageSize()).doSelectPageInfo(function::get); return copyToPageView(page, page.getList()); } /** * 查询db转换为另一个结果对象 * * @param pageNum 页数 * @param pageSize 页数大小 * @param function sql执行 * @param convert 转换方法 * @param <T> sql返回的对象 * @param <R> 转换后的对象 * @return */ public static <T, R> PageInfoView<R> getAsResult(int pageNum, int pageSize, Supplier<List<T>> function, Function<T, R> convert) { PageInfo<T> page = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(function::get); return copyToPageView(page, page.getList().stream().map(convert).collect(Collectors.toList())); } private static <T> PageInfoView<T> copyToPageView(PageInfo page, List<T> list) { PageInfoView<T> pageView = new PageInfoView<>(); pageView.setList(list); pageView.setPageNum(page.getPageNum()); pageView.setPageSize(page.getPageSize()); pageView.setPages(page.getPages()); pageView.setSize((int)page.getTotal()); return pageView; } }
返回参数实体类
package org.ggj.nms.base.vo; import lombok.Data; import java.io.Serializable; import java.util.List; /** * <p> * - 避免多余引用。 包装一下字段 * </p> * created on 2020-03-27 * * @author : 代码生成工具 */ @Data public class PageInfoView<T> implements Serializable { //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int size; //总页数 private int pages; // 排序字段 private String sort; // 升序或者降序 private String order; private List<T> list; }
数据库语句:
<select id="selectAllNotice" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List"/> FROM sys_notice WHERE status = 0 ORDER BY notice_id DESC </select>