• MyBatis 分页查询助手


    package com.tszr.mango.core.page;
    
    import java.util.List;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.tszr.mango.common.utils.ReflectionUtils;
    
    public class MybatisPageHelper {
    
        public static final String findPage = "findPage";
    
        /**
         * 分页查询, 约定查询方法名为 “findPage”
         * 
         * @param pageRequest 分页请求
         * @param mapper      Dao对象,MyBatis的 Mapper
         * @param args        方法参数
         * @return
         */
        public static PageResult findPage(PageRequest pageRequest, Object mapper) {
            return findPage(pageRequest, mapper, findPage);
        }
    
        /**
         * 调用分页插件进行分页查询
         * 
         * @param pageRequest     分页请求
         * @param mapper          Dao对象,MyBatis的 Mapper
         * @param queryMethodName 要分页的查询方法名
         * @param args            方法参数
         * @return
         */
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public static PageResult findPage(PageRequest pageRequest, Object mapper, String queryMethodName, Object... args) {
            // 设置分页参数
            int pageNum = pageRequest.getPageNum();
            int pageSize = pageRequest.getPageSize();
            PageHelper.startPage(pageNum, pageSize);
            // 利用反射调用查询方法
            Object result = ReflectionUtils.invoke(mapper, queryMethodName, args);
            return getPageResult(pageRequest, new PageInfo((List) result));
        }
    
        /**
         * 将分页信息封装到统一的接口
         * 
         * @param pageRequest
         * @param page
         * @return
         */
        private static PageResult getPageResult(PageRequest pageRequest, PageInfo<?> pageInfo) {
            PageResult pageResult = new PageResult();
            pageResult.setPageNum(pageInfo.getPageNum());
            pageResult.setPageSize(pageInfo.getPageSize());
            pageResult.setTotalSize(pageInfo.getTotal());
            pageResult.setTotalPages(pageInfo.getPages());
            pageResult.setContent(pageInfo.getList());
            return pageResult;
        }
    }
    package com.tszr.mango.core.page;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class PageRequest {
    
        /**
         * 当前页码
         */
        private int pageNum = 1;
        /**
         * 每页数量
         */
        private int pageSize = 10;
        /**
         * 查询参数
         */
        private Map<String, Object> params = new HashMap<>();
        
        public int getPageNum() {
            return pageNum;
        }
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
        }
        public int getPageSize() {
            return pageSize;
        }
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
        public Map<String, Object> getParams() {
            return params;
        }
        public void setParams(Map<String, Object> params) {
            this.params = params;
        }
        public Object getParam(String key) {
            return getParams().get(key);
        }
    }
    package com.tszr.mango.core.page;
    
    import java.util.List;
    
    public class PageResult {
    
        /**
         * 当前页码
         */
        private int pageNum;
        /**
         * 每页数量
         */
        private int pageSize;
        /**
         * 记录总数
         */
        private long totalSize;
        /**
         * 页码总数
         */
        private int totalPages;
        /**
         * 分页数据
         */
        private List<?> content;
    
        public int getPageNum() {
            return pageNum;
        }
    
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
        }
    
        public int getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        public long getTotalSize() {
            return totalSize;
        }
    
        public void setTotalSize(long totalSize) {
            this.totalSize = totalSize;
        }
    
        public int getTotalPages() {
            return totalPages;
        }
    
        public void setTotalPages(int totalPages) {
            this.totalPages = totalPages;
        }
    
        public List<?> getContent() {
            return content;
        }
    
        public void setContent(List<?> content) {
            this.content = content;
        }
    }
  • 相关阅读:
    20199106 2019-2020-2 《网络攻防实践》第三周作业
    Vulnhub
    NEEPU-CTF 2021 Web后四题Writeup
    Vulnhub
    [VNCTF 2021]naive题解
    F5杯 Web部分题目Writeup by atao
    CTFSHOW SSTI 刷题
    C语言文件
    函数+进制转换器
    C语言知识点小结
  • 原文地址:https://www.cnblogs.com/tszr/p/15941960.html
Copyright © 2020-2023  润新知